Python进行分词的各种调试:
第一步,最原始的分词法,jieba.cut 分词目标:从txt中导入语言,然后用结巴分词
import jieba f=open('d://shuju.txt','r') test_sent=f.read() words=jieba.cut(test_sent) print('/'.join(words))
第一步得出的答案如下:
我们可以发现,有一些词分错了。比如:改变传统 本来应该是两个词,被分成一个词了 大数据本来是一个词,却被分为两个词了 大/数据
接下来第二步:添加自定义词典
函数:jieba.load_userdict(filename) 是加载一个词典的。词典里面可以写三个,词,词性,
添加之后,还可以动态修改词典,用add和del
代码如下 中间空格处是添加的代码:
import jieba jieba.load_userdict('d://userdict.txt') #载入自定义词典 import jieba.posseg as pseg #这个词典里可以是以前就有的,可以是空的然后我们继续加 jieba.add_word('大数据') f=open('d://shuju.txt','r') test_sent=f.read() words=jieba.cut(test_sent) print('/'.join(words))
接下来,把 改变传统 分成两个词,方法:suggest_freq(segment,True)
import jieba jieba.load_userdict('d://userdict.txt') #载入自定义词典 import jieba.posseg as pseg #这个词典里可以是以前就有的,可以是空的然后我们继续加 jieba.add_word('大数据') jieba.suggest_freq(('改变','传统'),tune=True) f=open('d://shuju.txt','r') test_sent=f.read() words=jieba.cut(test_sent) print('/'.join(words))把改变,和传统用两个词写出来,还要加一个小括号!然后此时,设为True,代表能分开。这时候,改变传统 就能分为改变/传统
【P.S.:我试了想把改变传统用回一个词,但是改成false没成功,还是被分为两个词,所以如果想分回来改变传统,方法就是“把那个改变传统的两个字节符分开,然后还是用True】
jieba.analyse.extract_tags(sentence,topK=你想返回最大几个关键词,withWeight=False/True返回这些关键词的权重值,allowPOS仅包括指定词性的词)
代码:
import jieba jieba.load_userdict('d://userdict.txt') #载入自定义词典 import jieba.posseg as pseg #这个词典里可以是以前就有的,可以是空的然后我们继续加 jieba.add_word('大数据') jieba.suggest_freq(('改变','传统'),tune=True) f=open('d://shuju.txt','r') test_sent=f.read() #words=jieba.cut(test_sent) #print('/'.join(words)) for x,w in jieba.analyse.extract_tags(test_sent,withWeight=True): print('%s %s' % (x,w)) #这个print的用法是,用% 后面括号里的()第一个值x,替换第一个%s 第二个值w,替换第二个%s得到的结果如下:
倘若不用jieba.cut 而是用jieba.posseg那个,即pseg的话 ,是不仅可以分词,还可以看到每个词的词性
result=pseg.cut(test_sent) for w in result: print(w.word, "/", w.flag, ", ", end=' ')
这个仅在Linux系统上使用。Windows上面用不了