jieba 关于自定义词典词频问题等

bvk5enib  于 2个月前  发布在  其他
关注(0)|答案(7)|浏览(42)

请教各位:
1,自定义词库的词频该如何设置,分词效果会比较好?
我的自定义词库有3w8的词量,只有词没有词频,我就统一设了个词频。起初设置词频均为1,效果不好,很多词都分不出来。后来统一增加词频到100,200,300,500,1000,2000,3000,当词频在1000下时效果随着词频增加变好,而1000以上效果差距不明显。但是我看前面的话题您有回答说词频一般不用太高,3-5就差不多了。而dict.txt这个里词频高的词也不是特别多的。我该怎么设置好呢?

2,另外,能否解释下jieba.cut,finalseg.cut,posseg.cut这几个接口对分词效果的区别?

非常感谢!

h5qlskok

h5qlskok1#

  1. 建议实际统计一下未分词的语料中此自定义词库的词频,若不合适可乘上一个系数试试
  • 区别在:

  • jieba.cut 用了词典词频 + finalseg 中的 HMM 模型(可选择不用),准确率高

  • finalseg.cut 只用 HMM 模型,准确率不高,内存占用少

  • posseg.cut 与 jieba.cut 相似,用于分析词性(Part of Speech)

voase2hg

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把所有詞去掉只留下"凱特琳",此時又可以分出來"凱特琳"了。
可能的問題會出在哪呢?

vxf3dgd4

vxf3dgd43#

add_word 中修改词频 FREQ[word] = log(freq / total) 这样只给单字打补丁又不增加 total 的算法肯定有问题。应该调整所有词汇的频率,或者干脆只记录频数,即时计算频率?(需要测试)

xam8gpfp

xam8gpfp4#

@2153030 我也碰到这种自定义词典添加后反而不能正确切词的问题。难道这是HMM的局限?

acruukt9

acruukt95#

这应该是词频算法问题吧,如之前所说。同 #222 @fxsjy

0md85ypi

0md85ypi6#

@gumblex , 对,因为add_word这个实现没有去更改已经加载了的词的概率,而total已经发生变化了。

b1payxdu

b1payxdu7#

请教下一下,2台电脑:Mac和Ubuntu
jieba均为0.35,使用同样的用户词典
测试代码完全一样
但是对于「石墨烯」这个词,mac上可分出「石墨烯」而在ubuntu中分出「石墨」「烯」
这是为什么呢?

补充:在Mac中删掉jieba.cache,终于。。也分不出了。。

相关问题