请教各位:
1,自定义词库的词频该如何设置,分词效果会比较好?
我的自定义词库有3w8的词量,只有词没有词频,我就统一设了个词频。起初设置词频均为1,效果不好,很多词都分不出来。后来统一增加词频到100,200,300,500,1000,2000,3000,当词频在1000下时效果随着词频增加变好,而1000以上效果差距不明显。但是我看前面的话题您有回答说词频一般不用太高,3-5就差不多了。而dict.txt这个里词频高的词也不是特别多的。我该怎么设置好呢?
2,另外,能否解释下jieba.cut,finalseg.cut,posseg.cut这几个接口对分词效果的区别?
非常感谢!
7条答案
按热度按时间h5qlskok1#
区别在:
jieba.cut 用了词典词频 + finalseg 中的 HMM 模型(可选择不用),准确率高
finalseg.cut 只用 HMM 模型,准确率不高,内存占用少
posseg.cut 与 jieba.cut 相似,用于分析词性(Part of Speech)
voase2hg2#
不好意思,關於自定義辭庫我也有相關的問題,但是類型不太一樣。
我設了一個userdict.txt並用jieba.load_userdict(file_name),將其導入。其後是使用jieba.cut分詞。
一開始自定義的詞我只設一個詞,凱特琳,詞頻為3,此時可以將該詞分出來。
接著我將userdict.txt擴充至442個詞,詞頻也皆為3,此時卻無法將"凱特琳"分出來,結果變為"凱特"+"琳"。其他詞也無法正確分詞。
而後將"凱特琳"的詞頻逐漸從5,10,100,調高至1000都無法將"凱特琳"分出來。
最後我是將整個userdict.txt裡的內容複製到dict.txt裡面,才有辦法將所有詞分出來。
之後我又測試,將dict.txt還原,將userdict.txt把所有詞去掉只留下"凱特琳",此時又可以分出來"凱特琳"了。
可能的問題會出在哪呢?
vxf3dgd43#
add_word 中修改词频
FREQ[word] = log(freq / total)
这样只给单字打补丁又不增加 total 的算法肯定有问题。应该调整所有词汇的频率,或者干脆只记录频数,即时计算频率?(需要测试)xam8gpfp4#
@2153030 我也碰到这种自定义词典添加后反而不能正确切词的问题。难道这是HMM的局限?
acruukt95#
这应该是词频算法问题吧,如之前所说。同 #222 @fxsjy
0md85ypi6#
@gumblex , 对,因为add_word这个实现没有去更改已经加载了的词的概率,而total已经发生变化了。
b1payxdu7#
请教下一下,2台电脑:Mac和Ubuntu
jieba均为0.35,使用同样的用户词典
测试代码完全一样
但是对于「石墨烯」这个词,mac上可分出「石墨烯」而在ubuntu中分出「石墨」「烯」
这是为什么呢?
补充:在Mac中删掉jieba.cache,终于。。也分不出了。。