塞进裤子ヾ(≧O≦)〃嗷~

0%

NLP项目-分词

分词word segmentation

1.最大匹配

例子:我们经常有意见分歧。

词典:【我们,经常,有,有意见,意见,分歧】

假设maxlength=5

1.1前向最大匹配

forward max matching

  • 1.【我们经常有】意见分歧。× 【我们经常有】不在词典中,maxlength为5不符合。

    【我们经常】有意见分歧。× 【我们经常】不在词典中,maxlength为4不符合。

    【我们经】常有意见分歧。× 【我们经】不在词典中,maxlength为3不符合。

    【我们】常有意见分歧。√ 【我们】在词典中,符合,剩余单词为“经常有意见分歧”。

  • 2.【经常有意见】分歧。 × 【经常有意】见分歧。 × 【经常有】意见分歧。 ×

    【经常】有意见分歧。 √ 符合,剩余单词为“有意见分歧”。

  • 3.【有意见分歧】× 【有意见分】歧 × 【有意见】分歧 √

  • 4.【分歧】 √

最终分成 我们 || 经常 || 有意见 || 分歧。

1.2后向最大匹配

nackword max matching

  • 1.我们经常【有意见分歧】。× 【有意见分歧】不在词典中,maxlength为5不符合。

    我们经常有【意见分歧】。× 【意见分歧】不在词典中,maxlength为4不符合。

    我们经常有意【见分歧】。× 【见分歧】不在词典中,maxlength为3不符合。

    我们常有意见【分歧】。√ 【分歧】在词典中,符合,剩余单词为“我们经常有意见”。

  • 2.我们【经常有意见】。 × 我们经【常有意见】。 × 我们经常【有意见】。 √

  • 3.【我们经常】× 我【们经常】× 我们【经常】√

  • 4.【我们】 √

最终分成 我们 || 经常 || 有意见 || 分歧。

1.3最大匹配缺陷

有时候细分进一步可能更好,局部最优,效率问题(maxlength),没有考虑语义

2.基于概率统计

2.1语言模型

假设使用unigram

step1 对于给定字符串:”我们学习人工智能,人工智能是未来“, 找出所有可能的分割方式

  • [我们,学习,人工智能,人工智能,是,未来]

  • [我们,学习,人工,智能,人工智能,是,未来]

  • [我们,学习,人工,智能,人工,智能,是,未来]

  • [我们,学习,人工智能,人工,智能,是,未来] …….

    step2 计算出每一个切分之后句子的概率

  • p(我们,学习,人工智能,人工智能,是,未来)= -log p(我们)-log p(学习)-log p(人工智能)-log p(人工智能)-log p(是)-log p(未来)

  • p(我们,学习,人工,智能,人工智能,是,未来)=-log p(我们)-log p(学习)-log p(人工)-log p(智能)-log p(人工智能)-log p(是)-log p(未来)

  • p(我们,学习,人工,智能,人工,智能,是,未来)=-log p(我们)-log p(学习)-log p(人工)-log p(智能)-log p(人工)-log p(智能)-log p(是)-log p(未来)

  • p(我们,学习,人工智能,人工,智能,是,未来)=-log p(我们)-log p(学习)-log p(人工智能)-log p(人工)-log p(智能)-log(是)-log p(未来) ….

step3 选择第二步中概率最大的。

分词工具

jieba分词 https://github.com/fxsjy/jieba,

snowNLP https://github.com/isnowfy/snownlp

LTP 哈工大 http://www.ltp-cloud.com/

HanNLP https://github.com/hankcs/HanLP/

if help:小手一抖点个广告 or 大手一挥资助一下