青出于蓝 发表于 2022-4-13 11:51:03

【python】【鱼币福利】基于snownlp情感分析作诗【第二版】

本帖最后由 青出于蓝 于 2022-4-13 20:17 编辑

效果图:
https://xxx.ilovefishc.com/album/202204/13/144150q2iozhmzcoerqymh.png
python基础学完后,还是了对python比较有意思的第三方库的学习
之前做了一个python写诗的脚本,效果不错。原作品
那个作品主要是依靠较多数据,随机匹配作诗
而这个作品会加上对情感的分析,保证全诗的感情基调一致

后面会有作品源代码

望大伙多多评分,感谢!!!
snowlnp是一个十分强大的对中文文本分析的一个库,此脚本便依此分析情感
requests 爬取网页,获得诗句
jieba分词
re匹配
pip install 模块名
第三方库使用前需要下载!



这个过程主要依靠requests和re和jieba
爬取出来的数据会用json保存,方便下次使用
具体详见上一个作品



情感分析
进入正题

思路:
1.导入数据
2.分析情感
3.保存结果致列表


我们把分词后的词语进行情感分析,而为什么不直接分析诗句呢?
这是因为如果我们分析词语会更详细,例如送别诗中也不乏有没有负面情绪的词语,要详细分类
这个过程主要用SnowNLP方法,得出的数值如果在0.5以上基本就是积极的情感
那么所有词汇就都被分作两部分了
具体代码
with open("data.json",'r',encoding="utf-8") as f:
    data = json.loads(f.read())
qg=[]

for i in data:
    a=SnowNLP(i)
    sentiments = a.sentiments
    qg.append(sentiments)
g=random.randint(0,1)

ps:最后一行 这个g主要是来选择这首诗感情基调为积极还是伤感




然后是匹配诗句

思路:
1,不断随机匹配,如果字数不够就一直匹配
2,如果词汇感情基调与全诗不一致就pass,匹配留下

上代码:while d:
    f=""
    while True:
      if g==0:
            c=random.randint(0,len(data)-1)
            
            if len(f)+len(data)>e:
                pass
            elif qg<=0.5:
                pass
            else:
               
                f+=data
            if len(f)==e:
                sj+=(f+" ")
               
                break
            
            
      else:
            c=random.randint(0,len(data)-1)
            
            if len(f)+len(data)>e:
                pass
            
            elif qg<=0.5:
                f+=data
            else:
                pass
            if len(f)==e:
                sj+=(f+" ")
               
                break
    d-=1
            


变量sj即为全诗内容

输出:nn={1:'积极诗',2:"伤感诗"}
print(nn+"\n"+sj))


输出结果:

积极诗
星宿花径收 返斑雪白客 客山河肃清 夜榜响不成

如果想再次检验,可以把每一小句分离,在情感分析

for sj in sj.split():
    s = SnowNLP(sj)
    sentiments = s.sentiments
    print(sentiments)




**** Hidden Message *****

青出于蓝 发表于 2022-4-13 11:51:57

@小甲鱼 @冬雪雪冬 @不二如是 申精谢谢{:10_268:}

不二如是 发表于 2022-4-13 12:50:02

需要鱼油回复超过2页才能开始申精哦

青出于蓝 发表于 2022-4-13 13:26:13

不二如是 发表于 2022-4-13 12:50
需要鱼油回复超过2页才能开始申精哦

好的{:10_268:}

hornwong 发表于 2022-4-13 13:28:26

{:5_95:}

tianlai7266 发表于 2022-4-13 13:55:57

{:10_254:}

1050293757 发表于 2022-4-13 14:07:18

{:5_109:}

1050293757 发表于 2022-4-13 14:12:00

{:5_109:}

代码小白liu 发表于 2022-4-13 14:23:15

666666666666666

fxj2002 发表于 2022-4-13 16:05:48

{:5_95:}

okamn 发表于 2022-4-13 16:36:41

好好好

天叶 发表于 2022-4-13 16:36:54

{:10_279:}

tjweiyanmin 发表于 2022-4-13 21:38:30

{:5_109:}

myqf123 发表于 2022-4-13 21:56:46

{:10_275:}

1050293757 发表于 2022-4-13 23:43:31

{:5_109:}

amazed 发表于 2022-4-14 00:27:41

6666666666666

songwentao 发表于 2022-4-14 08:55:20

加油

超级无敌磊果果 发表于 2022-4-14 09:36:34

{:7_146:}

超级无敌磊果果 发表于 2022-4-14 09:37:46

老哥 你多撒点鱼币给我 我每天帮你顶{:7_137:}

a1372245671 发表于 2022-4-14 10:00:37

{:5_90:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【python】【鱼币福利】基于snownlp情感分析作诗【第二版】