nlp基础-中文分词

分词

新词发现

基于信息熵的新词发现

  • 词频:出现次数越多,越有可能成词
  • 凝固度:\(\frac{P(AB)}{P(A)P(B)}\), 两个字越容易一起出现,越有可能成词
  • 左(右)自由度(边界熵):\(H_{left}=-\sum{P_i}log_2P_i\) ,一个词左(右)边相邻的词熵越高,说明这个词越完整,例如:“算机”左边经常会出现“计”,说明“算机”并不是完整的词,“计算机”才是完整的词。

参考博客

基于切分的新词发现

上一个算法需要计算3个信息,并且边界熵的计算量很大(对每个片段都要分组统计)。

换一下思路:上一个算法是找哪些词可以独立成词,如果反过来,找哪些词不能成词,对文本做切分。就只需要算两个指标:词频,凝固度。去掉了计算量最大的边界熵,而且,在计算凝固度时,我们只需要计算二字片段的凝固度,省掉了更多字片段的凝固度计算,但是,由于我们是基于切分的方式做的,因此我们少了很多计算量,但理论上却能够得任意长度的词语!

实操的过程中,切分的评判依据除了凝固度,还可以用MLM(Bert)来建模两个字的相关程度,实现无监督的分词参考博客

分词

基于字典的分词,基于标注的分词

基于字典的分词

基于字典 博客

  • 列出所有分词可能,算出每种分词概率
    • 马尔可夫假设:每个词的出现只跟前一个词的出现有关
    • n-gram:每个词的出现跟前n-1个词有关
  • 构建有向无环图,viterbi算法求最优路径
    • 效率更高

基于标注的分词

比如4标注体系:

  • single,单字成词
  • begin,多字词的开头
  • middle,词语的中间部分
  • end,多字词的结尾

进而将问题转化成一个seq2seq问题

基于语言模型做无监督分词

  1. 训练一个基于字的语言模型
  2. 让语言模型给出第i个字到底是词的 开始/第二个字/第三个字/第四及以后 分别的概率
  3. 人工指定转移概率(人工指定...)
  4. viterbi算法得到概率最高的分词结果(路径)

参考博客

现有工具

jieba分词原理

posted @ 2023-09-22 15:05  shiiiilong  阅读(52)  评论(0编辑  收藏  举报