2. 杭州师范大学 数字媒体与人机交互研究中心, 杭州 311121
2. Digital Media & Human-Computer Interaction Research Center, Hangzhou Normal University, Hangzhou 311121, China
中文分词存在两个重要挑战: 歧义问题和未登录词问题[1]. 其中60%的分词错误是由未登录词导致的, 故如何高效且正确地识别未登录词是中文自然语言处理研究的重点和难点[2,3]. 前人的相关研究有新词和未登录词两个概念, 一定程度上, 新词可归属于未登录词范畴, 一般情况下并不对这两个概念作明确区分.
未登录词是指在词典中不存在的、未被及时收录的词, 包括: 中外人名、地名、机构组织名、事件名、缩略语、派生词、各领域术语以及没有固定生产机制的网络新词[4]. 例如, 缩略词“高数”、“抵京”、“发改委”、“音协办”, 2019年网络新词“种草”、“萌萌哒”、“人鱼线”、“雨女无瓜”等等. 未登录词随着社会发展不断涌现, 本质上是不可穷尽收集登录的, 对分词系统而言, 词表不能无限扩大, 那么对未登录词的自动识别就显得愈发重要.
互信息(Pointwise Mutual Information, PMI)是概率统计学领域的一个重要概念. 本文将改进PMI算法和最小邻接熵结合, 为改进PMI算法产生的垃圾串提供了新的约束, 提出了一种基于生语料文本本身的未登录词识别模型, 利用非监督学习方法, 在凝聚强度较弱的字符之间切割出字符串, 过滤掉词库中存在的词语得到候选未登录词, 统计出候选未登录词的最小邻接熵, 输出满足阈值要求的独立词, 从而提高了未登录词识别的正确率.
2 相关工作未登录词的识别方法主要可以分为两类: 基于规则的未登录词识别和基于统计的未登录词识别[4,5]. 前者利用有规律可循的构词学原理, 配合语义和词性信息所构造的规则模板, 通过匹配规则来发现未登录词, 通常根据汉语构词法建立规则知识库, 过滤掉不符合规则或者符合相关典型错误构词规则的垃圾字串, 留下的即是候选未登录词. 基于规则的识别方法针对性强, 但规则库的制定需要根据特定文本进行修改以适应文本的多样性, 且该方法难以应对毫无规则的网络新词; 统计的方法往往需要大规模语料库, 通过文本当中某个统计量的固有特征进行统计, 计算出成词概率高的字串. 基于统计的未登录词识别方法灵活通用, 移植性好, 但是面临着数据稀疏和正确率不高等问题. 目前多数研究者都采用统计与规则相结合的方法, 发挥组合优势, 设置多重过滤手段, 从而提升未登录词识别效果.
Pecina等[6]在计算了50余种量化指标之后, 证明了PMI指标是衡量字串间相关度最好的指标之一. 但单纯的PMI指标缺点是容易过高估计低频且总是相邻出现的字串. 例如“鸳鸯”、“憔悴”两词, 几乎难以在用语习惯中找到其他搭配, 这样的字串PMI值非常高, 包含这些字串的垃圾串PMI值也非常高, 算法容易出现误判, 产生例如“对鸳鸯”、“憔悴的”等错误. 针对此类问题, 有学者提出了将PMI与log-likelihood方法相结合的手段进行未登录词识别[7,8], 使得该类错误得到一定改善. 张峰等[9]利用PMI算法计算字间相关度, 设置了相关的构词规则, 人工建立了普通词语搭配前缀、后缀库, 过滤掉类似“十分兴奋”、“非常开心”这样的复合词. 梁颖红等[10]则将PMI和NC-value相结合, 提高了3字以上未登录词的识别率, 但是PMI和NC-value存在着一定的推导耦合关系, 两者并不能够独立地约束过滤相关垃圾串. 夭荣朋等[11]利用元递增算法(N-Gram)提取未登录词候选项, 对提取出来的候选未登录词使用频率和停用字、PMI和邻接熵(Branch Entropy, BE)、相应词典等进行多重筛选, 取得了不错的实验效果. 何婷婷等[12]分析了中文术语构成特点, 提出了一种基于质子串分解的术语自动抽取方法, 该方法对特定的中文文本有较好的效果. Pazienza等[13]在PMI算法的基础上, 提出了
中文的成词规则和习惯表明, 词是较为独立的, 能够在文本中不同位置自由搭配使用. 本文结合表征凝聚强度的互信息, 为改进PMI算法引入表征词语在文本字符串中自由程度的最小邻接熵, 利用改进的
本文采取基于改进PMI和最小邻接熵结合策略的方法, 对不同文本, 能在较小时间开销下学习训练调整参数, 生成个性化的未登录词词典, 并提升了现有分词系统的性能. 首先, 我们对生语料文本进行预处理, 去除干扰未登录词识别的标点符号、数字、特殊符号、英文字母、URL链接等, 在预处理之后, 系统先用PMI3算法摘选出5字及5字以下的所有可能成词的字符串, 经过35万结巴词库过滤, 得到候选的未登录词, 候选词进入判定环节, 符合词频-最小邻接熵(TF-Entropy)融合指标阈值的会被写入未登录词输出文本当中. 因为词频指标依然一定程度上能够反映字符串的成词率, 本文为了不误过滤低频未登录词, 故利用数据融合手段, 将词频指标和最小邻接熵指标融合. 图1为本文未登录词的识别流程.
3.1 独立词的成词维度和指标设计
借鉴信息论中的互信息概念, 两事件
$R_{\rm PMI}(x,y) = \log \frac{{p(x,y)}}{{p(x)p(y)}}$ | (1) |
在本文中,
Bouma[15]对传统的PMI算法做出了相关改进, 引入n个联合概率因子, 提出了PMIn算法. PMIn算法定义如下:
$R_{{\rm PMI}^{n}}(x,y) = \log \frac{{{p^n}(x,y)}}{{p(x)p(y)}},n \in {N^ + }$ | (2) |
杜丽萍等[14]从理论和实验上证明了PMIn算法比单纯的PMI具有更高的精度, 且
从中文句法规则和成词规律当中分析得出, 如果一个字符串片段能够成为独立词, 它应有较为丰富的左邻字集合和右邻字集合. 以香农提出的信息熵(entropy)为基础, 衍生出最小邻接熵的概念, 用来表征字符串片段的自由运用程度.
信息熵的定义如下: 如果某事件的发生概率为
$\left\{ \begin{array}{l} H_{\rm left} = \displaystyle\sum\limits_{i = 1}^n { - {p_i} \times \log ({p_i})} \\ H_{\rm right} = \displaystyle\sum\limits_{j = 1}^m { - {p_j} \times \log ({p_j})} \\ \end{array} \right.$ | (3) |
其中,
$Entropy = Min\{ H_{\rm left},H_{\rm right}\} $ | (4) |
基于统计的思想认为, 一个字符串搭配如果在语料中的次数越多, 那么该字符串是一个独立词的可能性越高. 通过实验发现, 未登录词与登录词在词频
$X' = \frac{{X - {X_{\min }}}}{{{X_{\max }} - {X_{\min }}}}$ | (5) |
$TF - Entropy = i \times F' + (1 - i) \times Entropy'$ | (6) |
单纯PMI方法需要整定词频、PMI、邻接熵等多个参数, 无法集中精力调参优化. 本文方法在保证判定维度不变的情况下, 结合了内部聚合程度、外部自由程度, 用于对未登录词的识别, 同时设计了一个综合的衡量指标, 方便针对特定文本优化调整, 在较小时间开销下学习训练调整参数, 生成个性化的未登录词词典.
3.2 独立词判定算法词是字的组合, 相邻的字同时出现的次数越多, 就越有可能构成一个词. 字与字相邻共现的频率能够反映成词的可信度, PMI3算法能够很好的表征词内部字与字之间凝聚强度. 在文本当中, 所有的字符可以看做构成了一个字符串, 字符串当中嵌入了多个独立词, 未登录词识别的目标是能够抽取字符串当中存在的独立词. 信息熵是信息论当中的概念, 能很好的运用在表征灵活自由度的场合中. 因此, 本文为PMI3算法引入最小邻接熵的约束, 结合凝聚、自由两个维度, 进行独立词的判定. 将文本进行数据清洗预处理, 去除所有标点符号, 得到纯净的文本CORPUS, 其中STOPWORDS和Jieba_Vocabulary分别代表停用词词表和结巴过滤词库, NEW_CANDIDATES代表算法运行过程中新扩展的候选未登录词, OOV_CANDIDATES表示候选未登录词列表集合, 具体步骤如下所示:
GET_OOV_WORDS(CORPUS, STOPWORDS, Jieba_Vocabulary)
Step 1. 遍历CORPUS, 计算中间二元字串和左边二元字串PMI3值的平均值, 计算中间二元字串和右边二元字串PMI3值的平均值.
Step 2. 如果中间二元字串的PMI3值分别大于3倍左、右侧二元字串的PMI3值, 则将中间二元字串组合后的词加入待扩展种子, 得到待扩展种子列表.
Step 3. 在种子左右各取一元, 分别计算三元PMI3值, 如果左侧三元字串的PMI3值大于右侧, 则①往左扩展; 否则②往右扩展.
① 左侧三元字串PMI3值大于等于1/3种子本身PMI3值, 则将左扩展三元字串加入NEW_CANDIDATES; 否则, 终止扩展输出种子字串.
② 右侧三元字串PMI3值大于等于1/3种子本身PMI3值, 则将右扩展三元字串加入NEW_CANDIDATES; 否则, 终止扩展输出种子字串.
Step 4. 依次迭代, 直至达到5元字串, 终止扩展.
Step 5. 利用STOPWORDS和Jieba_Vocabulary对NEW_CANDIDATES进行过滤, 得到OOV_CANDI-DATES.
Step 6. 分别计算候选未登录词OOV_CANDIDATES的左右邻接熵, 求出OOV_CANDIDATES的最小邻接熵.
Step 7. 从内存中查取候选未登录词OOV_CANDI-DATES的词频TF.
Step 8. 将词频和最小邻接熵分别归一化去量纲得到纯量.
Step 9. 对统计得到的词频和最小邻接熵的做数值融合处理, 方便下一步判断.
Step 10. OOV_CANDIDATES中符合词频-最小邻接熵阈值要求的, 输出为最终的未登录词OOV_WORDS.
4 实验与分析 4.1 实验数据1) 由于不同文本存在个性化差异, 甚至文本之间的风格、写作逻辑也存在很大不同, 本文讨论的算法旨在于分析一种通用的未登录词识别方案, 故选取了数据稀疏程度较高的互联网文本, 其中包括4个类别, 分别为新闻数据、微博数据、汽车论坛数据、餐饮点评数据, 约14万字, 共79 226个词. 实验结果的评测标准语料, 按照北大现代汉语基本加工规范进行处理, 以作为未登录词识别和中文分词性能实验的标准答案.
2) 符号过滤表: 利用正则表达式从语料中筛选的标点符号和特殊符号.
3) 停用词词典: 包含702个停用词(选自哈尔滨工业大学停用词表), 用于过滤候选未登录词中的垃圾串.
4) 结巴词典: 共收集354 895个词语, 是目前较为规范的词典之一, 用于过滤候选未登录词中的已登录词, 以便得到词库中未登录的独立词.
4.2 实验过程 4.2.1 文本预处理由于互联网论坛语料极不规范, 预处理的目的是将其中的URL链接、标点符号等干扰项过滤掉, 得到较为纯净的实验文本, 以保证未登录词自动识别过程中, 算法不受干扰. 利用正则表达式从语料中筛选过滤掉标点等符号, 例句的预处理结果如表1所示.
4.2.2 未登录词部分识别结果
Chen等[1]经研究指出, 99%的独立词是在5字及5字以下, 所以算法设置最大抽取词长为5. 实验中词频纯量TF'的融合权重为0.2, 词频-最小邻接熵TF-Entropy设置为0.7. 表2列举了部分基于PMI3算法和最小邻接熵结合策略的未登录词识别结果. 从表中统计的的数据可知, 该算法对2字词和3字词识别数目占总识别到的词数的78.6%, 对3字以上的多字词识别占比为60.9%, 验证了结合策略算法对多字词有一定识别能力. 结果中有一些错误未登录词, 例如“据了解”、“接到报警后”等, 主要原因是在特定主题的互联网语料中, 同样的表述反复出现和使用, 导致这些字串的凝聚和自由程度较高, 作为垃圾串没有被很好的识别过滤.
4.2.3 未登录词识别算法对比
评测未登录词识别和中文分词系统性能, 一般采用正确率P、召回率R、F值来衡量, 其计算公式如下所示, 其中TP、FP、FN分别表示正样本识别正确的个数, 正样本识别错误的个数, 负样本识别错误的个数.
$P = \frac{{TP}}{{TP + FP}}$ | (7) |
$R = \frac{{TP}}{{TP + FN}}$ | (8) |
$F = \frac{{2 \times P \times R}}{{P + R}} \times 100\% $ | (9) |
针对未登录词识别系统, TP表示系统识别到的正确未登录词词数, TP +FP表示系统识别出的所有未登录词词数, TP+FN表示标准实验文本中所有未登录词词数. 将本文方法与常见未登录词识别代表方法, 进行未登录词识别对比实验, 结果见表3.
方法1利用PMI算法与基本过滤算法结合, 从语料中识别未登录词. 方法2使用N元递增算法(N-Gram)完成对未登录词的识别, 并加入了少量的简单规则过滤方法, 有效地提高了未登录词识别的效果, 但是对三字词以上的未登录词识别效果较差, 所以其正确率较低. 方法3在传统N-Gram的基础上引入互信息(PMI)来进行未登录词的抽取, 实验证明了该方法的有效性. 方法4在单纯PMI算法基础上引入3阶联合概率因子, 较好克服了PMI方法精度不高的缺点. 但方法3、4均缺少对未登录词上下文的联系, 没有考虑词语的外部成词概率. 单纯的PMI3算法, 虽然相对PMI算法, 正确率有很大的提高, 但单以词语内部凝聚强度的大小作为词语的边界, 缺少考虑词语外部自由程度反映的成词概率. 所以方法5在基于改进PMI3方法(3阶)的基础上引入表征未登录词所在文本中自由灵活程度的最小邻接熵指标, 通过互信息和邻接熵的互相约束提高未登录词发现精度. 该方法有效解决了未登录词的边界界定问题, 精准确定未登录词的前后边界, 最终得到一个系统效率较高, 实验结果更精确的未登录词识别结果.
采用PMI3和最小邻接熵相结合的未登录词识别方法, 在能较好识别多字词的基础上, 同时考虑了词语的内、外部成词概率, 所以其总体识别效果进一步提高. 融合表征词内部字间凝聚强度的PMI3算法和词外部的灵活自由程度的最小邻接熵的未登录词识别系统在未登录词识别中取得了不错的效果, 其正确率、召回率、F值相对于其他算法均有一定的提高.
4.2.4 改进分词系统实验本文将PMI3算法和代表着独立词外部自由程度的邻接熵相结合, 能够更好的提取出文本当中个性化词串, 帮助识别未登录词, 最后与核心词典库加载融合, 生成个性化的文本词典. 改进的Jieba分词系统切分文本主要分为3个步骤: (1)基于生语料文本本身进行未登录词识别和个性化候选字串的提取; (2)将识别结果编纂成针对文本本身的用户词典, 加载融合到Jieba分词系统中; (3)对语料进行分词.
将本文结合策略算法识别到的未登录词作为个性化用户词典, 引入关闭自身未登录词发现功能的Jieba分词工具, 与Jieba自带的未登录词识别功能作对比. 实验设计分组如下. 实验1: 关闭未登录词识别功能的Jieba分词系统, 该系统完全依赖Jieba自带的核心词库, 不具有未登录词识别能力; 实验2: 开启未登录词识别功能的Jieba分词系统, 该系统依赖核心词库的同时, 利用隐马尔科夫模型(Hidden Markov Model, HMM)思想识别未登录词; 实验3: 加载个性化用户词典的Jieba分词系统, 本方法基于Jieba系统自带的核心词库, 并加载融合了结合策略算法识别得到的个性化词典. 表4例举了语料中例句在实验1、实验2和实验3中的结果.
例句: 最近有特惠套餐除早餐时段双层堡加饮料15元~在卖的三国杀优惠卡觉得有点无用唉, 如果爱吃麦旋风的话就还可以, 饮品的话, 套餐都有的嘛, 单点下午茶呗.
表4中, 针对例句, 关闭和开启未登录词识别功能的Jieba分词系统均把未登录词“双层堡”、“三国杀”切分为“双层|堡”、“三国|杀”; Jieba分词系统加载个性化用户词典(词典中包含未登录词“双层堡”、“三国杀”)后, 分词系统把未登录词“双层堡”、“三国杀”切分为一个词. 关闭未登录词识别功能的Jieba分词系统分词把“麦旋风”切分为“麦|旋风”, 开启未登录词识别功能的Jieba分词系统把未登录词“麦旋风”切分, 将“麦旋风”中的“麦”和它前面的“爱吃”结合起来切分为“爱吃麦”和“旋风”, 结果为“爱吃麦|旋风”; 加载个性化用户词典的Jieba分词系统(词典中包含未登录词“麦旋风”)把未登录词“麦旋风”切分为一个独立词. 从互联网测试语料的分词结果来看, 主要有2种情况: ① 关闭和开启未登录词识别功能的Jieba分词系统在遇到未登录词时, 大多情况下均是将未登录词切分为多个“散串”, 如“双层|堡”、“三国|杀”, Jieba分词系统加载包含这些未登录词的个性化用户词典后, 均能被正确切分; ② 开启未登录词识别功能的Jieba分词系统自动识别出的未登录词不正确, 导致句中邻近词的错分, 如例句中把“爱吃麦”当做一个词, “麦旋风”后的“旋风”单独成词. 实验表明通过加载个性化用户词典改进分词系统是一种可靠有效的方法.
为进一步验证该未登录词识别方法的有效性, 以及识别生成的个性化词典应用到分词系统中的整体效果, 对数据稀疏程度较高的论坛语料, 统计上述3组分词系统的中文分词正确率、召回率和F值, 针对分词系统, 式(7)~式(9)中的TP表示分词系统切分正确的词数, TP + FP表示分词系统切分出的总词数, TP +FN表示标准实验文本中包含的总词数, 结果如表5所示.
从表5可见, Jieba加载用户词典后, 分词系统识别出的未登录词数目达4563个, 对互联网语料的分词效果有明显提升, 精确率、召回率、F值也相对加载前分别提高1.77%、7.02%和4.93%. 相对开启未登录词识别功能的Jieba分词系统, Jieba加载用户词典后分词系统识别出的未登录词数目增加657个, 精确率、召回率和F值也分别提高0.19%、0.18%和0.58%. 通过将本文结合策略算法识别到的未登录词构成个性化用户词典, 可以提高原分词系统的分词性能, 尤其对于网络新词效果显著, 纠正了针对未登录词的分词错误. 得益于构建的个性化未登录词词典, 本文方法在分词结果中有着最大的F值, 验证了该方法在网络新词识别方面具有较高的正确率和召回率.
5 结论与展望本文在前人研究基础上, 针对未登录词识别问题, 基于互联网论坛文本, 将PMI3算法和独立词外部邻接熵相结合, 加强过滤条件, 将词频、最小邻接熵按照成词机理, 科学融合成一个综合指标, 形成TF-Entropy过滤参数, 很好地抑制了垃圾串的出现. 相比其他算法, 该方法在P、R、F值上均带来了一定的提升, 且能在较小时间开销下学习训练调整参数. 本文算法能够很好地针对特定文档构建个性化用户词典, 加载融合常用核心词库后, 提升了现有分词系统性能.
该算法在数据稀疏, 训练数据标记不规范, 缺少大规模语料的情况下, 有着较好的表现. 下一步工作是针对特定文本, 研究自适应整定词频-最小邻接熵参数的方法, 引入更多专家经验, 在保证分词速度的同时能够提高对未登录词的识别率, 最终实现正确分词, 进一步提高在数据稀疏的情况下, 分词系统对文本本身的自动化处理能力.
[1] |
Chen XC, Shi Z, Qiu XP, et al. Adversarial multi-criteria learning for Chinese word segmentation. Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics. Vancouver, BC, Canada. 2017. 1193–1203.
|
[2] |
Lileikytė R, Fraga-Silva T, Lamel L, et al. Effective keyword search for low-resourced conversational speech. Proceedings of 2017 IEEE International Conference on Acoustics, Speech and Signal Processing. New Orleans, LA, USA. 2017. 5785–5789.
|
[3] |
Sheikh I, Fohr D, Illina I, et al. Modelling semantic context of OOV words in large vocabulary continuous speech recognition. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2017, 25(3): 598-610. DOI:10.1109/TASLP.2017.2651361 |
[4] |
Li XQ, Zhang JJ, Zong CQ. Towards zero unknown word in neural machine translation. Proceedings of the 25th International Joint Conference on Artificial Intelligence. New York City, NY, USA. 2016. 2852–2858.
|
[5] |
Van Heerden C, Karakos D, Narasimhan K, et al. Constructing sub-word units for spoken term detection. Proceedings of 2017 IEEE International Conference on Acoustics, Speech and Signal Processing. New Orleans, LA, USA. 2017. 5780–5784.
|
[6] |
Pecina P, Schlesinger P. Combining association measures for collocation extraction. Proceedings of COLING/ACL on Main Conference Poster Sessions. Sydney, Australia. 2006. 651–658.
|
[7] |
Pantel P, Lin DK. A statistical corpus-based term extractor. Proceedings of the 14th Biennial Conference of the Canadian Society for Computational Studies of Intelligence. Ottawa, ON, Canada. 2001. 36–46.
|
[8] |
韩艳, 林煜熙, 姚建民. 基于统计信息的未登录词的扩展识别方法. 中文信息学报, 2009, 23(3): 24-30, 50. |
[9] |
张锋, 许云, 侯艳, 等. 基于互信息的中文术语抽取系统. 计算机应用研究, 2005, 22(5): 72-73, 77. |
[10] |
梁颖红, 张文静, 周德富. 基于混合策略的高精度长术语自动抽取. 中文信息学报, 2009, 23(6): 26-30. |
[11] |
夭荣朋, 许国艳, 宋健. 基于改进互信息和邻接熵的微博新词发现方法. 计算机应用, 2016, 36(10): 2772-2776. |
[12] |
何婷婷, 张勇. 基于质子串分解的中文术语自动抽取. 计算机工程, 2006, 32(23): 188-190. |
[13] |
Pazienza MT, Pennacchiotti M, Zanzotto FM. Terminology extraction: An analysis of linguistic and statistical approaches. In: Sirmakessis S, ed. Knowledge Mining. Berlin, Heidelberg: Springer, 2005. 255–279.
|
[14] |
杜丽萍, 李晓戈, 于根, 等. 基于互信息改进算法的新词发现对中文分词系统改进. 北京大学学报(自然科学版), 2016, 52(1): 35-40. |
[15] |
Bouma G. Normalized (pointwise) mutual information in collocation extraction. From form to meaning: Processing texts automatically. Proceedings of the Biennial GSCL Conference. Potsdam, Germany. 2009. 31–40.
|