SeanLee97 / xmnlp

xmnlp:提供中文分词, 词性标注, 命名体识别,情感分析,文本纠错,文本转拼音,文本摘要,偏旁部首,句子表征及文本相似度计算等功能
Apache License 2.0
1.23k stars 188 forks source link

xmnlp.seg(text)效果不是很好 #27

Closed onexuan closed 2 years ago

onexuan commented 3 years ago

text='7月1日,世预赛亚洲区12强赛抽签举行,中国队分在B组。同组对手是日本、澳大利亚、沙特、阿曼、越南。体育博主潘伟力在个人微博上表示,国足应把目标定在小组第二,第三意义不大。' xmnlp.seg(text) ['7月1日', ',', '世', '预赛', '亚洲区', '12', '强赛', '抽签', '举行', ',', '中国队', '分', '在', 'B', '组', '。', '同', '组', '对手', '是', '日本', '、', '澳大利亚', '、', '沙特', '、', '阿曼', '、', '越南', '。', '体育博主', '潘伟力', '在', '个人', '微博', '上', '表示', ',', '国', '足', '应', '把', '目标', '定', '在', '小组', '第二', ',', '第三意义', '不大', '。']

SeanLee97 commented 3 years ago

对于特定领域的效果确实有待提升,后续有空了会优化下哈。

SeanLee97 commented 2 years ago

@onexuan xmnlp v0.5.0 发布了,新版本重新训练了词法分析模块,恢复了自定义词典的功能,支持三个分词接口:

上述句子效果如下:

In [6]: doc = '7月1日,世预赛亚洲区12强赛抽签举行,中国队分在B组。同组对手是日本、澳大利亚、沙特、阿曼、越南。体育博主潘伟力在个人微博上表示,国足应把目标定在小组第二,第三意义不大'

In [7]: print(xmnlp.seg(doc))
Lazy load lexical...
['7月1日', ',', '世', '预赛', '亚洲区', '12', '强', '赛', '抽签', '举行', ',', '中国队', '分在', 'B', '组', '。', '同组', '对手', '是', '日本', '、', '澳大利亚', '、', '沙特', '、', '阿曼', '、', '越南', '。', '体育', '博主', '潘', '伟力', '在', '个人', '微博', '上', '表示', ',', '国足', '应', '把', '目', '标定', '在', '小组', '第二', ',', '第三', '意义', '不大']

In [8]: print(xmnlp.fast_seg(doc))
['7', '月', '1', '日', ',', '世', '预赛', '亚洲区', '12', '强', '赛', '抽签', '举行', ',', '中国队', '分在', 'B', '组', '。', '同组', '对手', '是', '日本', '、', '澳大利亚', '、', '沙特', '、', '阿曼', '、', '越南', '。', '体育', '博', '主', '潘', '伟力', '在', '个人', '微', '博', '上', '表示', ',', '国足', '应', '把', '目', '标定', '在', '小组', '第二', ',', '第三', '意义', '不大']

In [9]: print(xmnlp.deep_seg(doc))
['7月1日', ',', '世预赛', '亚洲区', '12强', '赛', '抽签', '举行', ',', '中国队', '分', '在', 'B', '组', '。', '同组对手', '是', '日本', '、', '澳大利亚', '、', '沙特', '、', '阿曼', '、', '越南', '。', '体育', '博主', '潘伟力', '在', '个人', '微博', '上', '表示', ',', '国', '足', '应', '把', '目标', '定', '在', '小组', '第二', ',', '第三', '意义', '不大']

分词速度对比

In [12]: %timeit xmnlp.fast_seg(doc)
385 µs ± 2.36 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [13]: %timeit xmnlp.seg(doc)
19.5 ms ± 435 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [14]: %timeit xmnlp.deep_seg(doc)
20.2 ms ± 2.28 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

如果效果还不满足要求,可以自定义词典