cover_image

网文领域新词发现

于德发、刘四维 阅文技术
2022年04月01日 09:04

网文领域新词发现






 一








背景

切词在文本处理中属于非常重要的任务,且对后续任务的影响比较大(例如搜索的召回)。目前我们有各种各样的切词工具可以使用,同时配合我们日常积累下来的词包,基本可以获得一个相对满意的切词结果。但在很多垂直领域,往往会有很多领域相关的新词,由于这些新词不在我们的词包中,因此会导致切词不准确。比如网文领域,角色名、地名、武功秘籍等等,基本都是作者头脑风暴的结果,可能完全不依托于现实中的任意一个真实场景或经验。此时,我们的切词工具就无法识别出这些词,即出现了OOV问题。
这里引出一个思考,我们如何将几个连续的字识别为一个词?特别是网络上流行的一些新梗和新词,其构成可能完全不符合中文的语法,但却被大家普遍接受。在网络小说领域(尤其是搜索场景下),如何识别出这些新词,就是本文要探讨的问题。

 二








新词发现

新词发现本质上也是实体的发现,我们可以将其归为命名实体识别(NER)领域,将其作为一个实体挖掘出来。最常见的,我们可以使用深度学习领域的LSTM+CRF模型去做这件事。不过,NER的模型训练一般都是基于有监督的学习的,在训练之前,我们需要先标注大量的数据供模型学习。但在前期没有足够的人力和时间标注的情况下,我们可以采用一些无监督的,基于统计的方法来实现。本文将首先介绍一种常用的,基于PMI和信息熵的算法 [2] [3],然后会介绍我们对这种算法的改进。

什么样的字组合起来能够被称为一个词?
  • 这个“组合”在文章中要经常出现 在中文语境下,一个词通常由2-5个字组成。因此我们可以使用ngram的方法把全文分成二元组、三元组、四元组和五元组,并统计这些元组在文章中出现的频次。我们认为,假如一个n元组是一个词,那么它在文章中一定会出现很多次,比如,角色的名字,地名等等。但仅仅使用词频是远远不够的,比如《大奉打更人》的主角叫许七安许七安在整本小说中一共出现了21766次。ngram的方法除了识别出这个3-gram外,这个3-gram内部,和左右的字也会组成其它的n元组,比如许七七安七安说找许七安等,这些ngram出现的频率也会很高。因此仅靠词频是会带入很多错误的信息。
  • 这个组合的内部凝聚程度要高 我们用麒麟这个词来举个例子。通常,这两个字经常一起组合出现,另一方面,两个字基本不会和其他的字一起组合出现。因此,我们可以称这两个字组成的词,内部凝聚程度很高。我们可以使用PMI (Point-wise Mutual Information) [1] [2] 来表征这个凝聚程度,也称之为凝固度 [3]
图片
对于一个元组xy,假设x和y完全没有关系,不成词,即x和y是相互独立的,那么P(xy) = P(x)*P(y)。这种情况下,PMI=0。相反,假设xy是一个词,那么x和y的出现一定存在某种关系,即不满足相互独立,且xy的PMI越高,内部凝聚程度越高,越可能成为一个词。除了PMI之外,通常还可以采用LLR [4] 等多种方法来计算凝聚程度。
我们继续用“许七安”和“七安说”举例,在《大奉打更人》一书中,n元组一共有12074464个,其中“许七安”出现21766次,“七安说”出现238次, “许”出现33284次,“七安”出现21769次,“说”出现14882次,那么PMI(许七安) = 8.5027,PMI(七安说) = 3.1490,也就是PMI(许七安) >> PMI(七安说),那么我们更有理由相信“许七安”比“七安说”更像一个词。
在实际计算的时候,“许七安”的组合方式有多种:"许七/安"、"许/七安"。为此,我们需要计算出:min(PMI(许七/安), PMI(许/七安)),如果它大于给定的阈值,就认为它很可能是一个词。
不过凝固度只能反应这个“组合”内部的凝聚程度。对于“许七安”内部的子串“许七”,他的凝固度也很高(PMI(许七)=8.4137)。但我们知道“许七”只是“许七安”内部的子字符串而已,小说中并不存在一个叫做“许七”的人物。为此,我们还需要借助“组合”的外部信息来进一步判断是否成词。
  • 这个”组合“的左边和右边能够出现丰富的候选字。通常一个"词"的左边和右边会有丰富的搭配,即:“词”的左右出现的字的随机性会很高。例如“许七安”作为一个角色名,它可以作为主语出现,也可能作为宾语出现,因此,它的左右两边都可能会出现各种各样的谓词。我们知道,“信息熵”可以表示信息量的大小,信息熵越高,说明信息量越大,不确定性越高,越随机。
图片
因此,我们可以使用信息熵来表示“组合”左右的字的不确定性程度,“组合”左右的信息熵越大,就越能说明它是一个词。[2] [3]
图片图片
以“许七安”和“许七”举例,两者的左边候选字一样,但是“许七安”的右边有1220个候选字,而“许七”的右边只有3个候选字。所以"许七安"的右熵远大于“许七”的右熵。“许七”的右边搭配比较固定,基本和“安”绑定,所以我们认为“许七”不能够成一个词,“许七安”才是一个词。
为此,我们可以计算出一个n元组左边和右边出现的字的熵,如果左右熵都大于某个给定的阈值,那么就将其放到新词的候选集里。

过滤旧词(常用词)

结合PMI和熵的计算,及阈值截断,我们就可以从n元组中召回词,但是这些词并不一定是新词,对于常用词语,也同样会被召回。因此,我们还需要把召回结果中的旧词过滤掉,才能得到新词。通常对旧词的过滤可以采用词典法,即:如果一个词存在于我们已有的词典中,那么就是一个旧词,反之则是一个新词。



 三








算法引进

引入TFIDF 

对于出现频率很低的字,跟其它字组成的n元组可能具有比较高的PMI值。因为字的频率低,PMI公式中的分母就小,进而使得PMI较大。然而,由于频率低,因此这样构成的n元组成词的概率也较低(可能是偶然组合到一起的)。为了解决这个问题,学术界提出了很多方法,比如,PMIk算法 [5],通过对分子 P(x, y) 进行k次方,来增大分子。
另一方面,在搜索领域,我们通常会采用TFIDF算法来对在全库范围内出现较多的词(IDF小),或者对某个文档出现很少的词进行降权(TF小)。这个特点正好可以弥补PMI存在的问题:出现频率低的n元组,其TFIDF也会较小。
为此,我们可以首先对n元组进行TFIDF计算,只有TFIDF满足阈值的n元组才进行PMI和熵的计算。同时,对PMI和熵的计算针对文档(小说)粒度,而不针对全库。这个小小的改进可以带来很多好处:
• 避免了PMI偏好低频字的问题
• 确保挖掘出来的词的TFIDF较高,在搜索场景下,这样的词更有意义
• 通过对TFIDF的截断,我们可以极大的减少需要计算PMI和熵的n元组数量
• 自动过滤掉旧词(详见下文)
在网络小说领域,新词往往是以书籍粒度出现的。除了一些相关联的书籍外(例如:同人小说),每本书的角色名,地名等往往是不同的。因此,这些新词会在某一本,或几本书中大量出现,但在其它书籍中很少出现或不出现。TFIDF天然的适合区分这些旧词和新词:旧词在大量书籍中出现,其TFIDF会很小,而新词在少量书籍中大量出现,TFIDF值会较大。通过对TFIDF的过滤,我们也间接地把旧词过滤掉了,而不需要进行专门的旧词过滤操作。

子词挖掘

汉语的词语构成常常会出现由两个或多个词联合组成的组合词,比如,《大奉打更人》中有个角色名叫“采薇”,在书中,这个2元组大量以“采薇姑娘”,“采薇师妹”的形式出现,而“采薇”本身单独出现的频率反而比较低。因此,“采薇”这个2元组右边出现的字随机性较小(大部分情况都是“姑”字,和“师”字),这就导致该2元组的右熵较低。使用前述方法我们可以挖掘出“采薇姑娘”,“采薇师妹”作为新词,而“采薇”则被丢弃了。我们将这些组合词内部的词语称为子词,上面的例子中,“采薇”就是“采薇姑娘”,“采薇师妹”的子词。
在搜索的场景下,用户输入“采薇”时,如果需要搜索出结果来,就得把“采薇”这个词切出来,并建立索引。为此,我们需要对发现的新词做进一步的挖掘,找出其中的子词。同时有了子词和组合词的关系,在检索召回时,我们更有把握对组合词限定一个更严格的匹配方式,比如match_phrase
对于每个挖掘出来的新词,如果包含4个或4个以上的字,我们对其进行切词。如果它能被切成“other” + “词“或者”词” + “other“的模式,那么我们将“other”部分组合成一个子词。对于这个子词,如果它不是一个已知的词,同时左熵/右熵其一,TFIDF以及PMI都满足我们给定的条件,那么我们认为这也是一个新词。


 四








实验效果

如上所述,利用TFIDFPMI,信息熵以及子词挖掘,我们就可以从ngram中挖掘出新词来。在实验中,我们对1万本网络小说进行了挖掘。以下是部分从《大奉打更人》一书挖掘的一部分新词:

大奉,大奉王朝,大奉朝廷,许平峰,许辞旧,度厄,度厄罗汉,桂月楼,鸾钰,许七安,许平志,郑兴怀,柴贤,宋廷风,飞兽军,葛文宣,朱广孝,魏渊,怀庆,怀庆公主,怀庆殿下,许铃音,许宁宴,伊尔布,许元霜,七绝蛊,吕捕头,钱青书,许银锣,周赤雄,周立,周旻,三花寺,三黄县,冰夷元君,浮屠宝塔,山海关战役,公孙向阳,努尔赫加,白衣术士,武宗皇帝,武宗,司天监术士,司天监,地宗,地宗道士,封魔钉,临安公主,临安,楚元缜,张行英,九色莲藕 ... ...


 五








结论

通过上述方法,我们可以挖掘出小说中的新词,有助于我们完善切词,提升搜索召回的准确率。这种方法的优点是不需要标注,可以进行快速的尝试与应用,也可以与其他方法进行补充使用。简单,实用。


参考文献

[1] Kenneth Ward Church and Patrick Hanks. 1990. Word association norms, mutual information, and lex- icography. Comput. Linguist., 16(1): 22--29, March.

[2] Minlie Huang, Borui Ye, Yichen Wang, Haiqiang Chen, Junjun Cheng, and Xiaoyan Zhu. 2014. New Word Detection for Sentiment Analysis. In Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 531–541, Baltimore, Maryland. Association for Computational Linguistics. 

[3] Matrix67. 互联网时代的社会语言学:基于SNS的文本数据挖掘

[4] Ted Dunning. 1993. Accurate methods for the statistics of surprise and coincidence. Computational Linguistics, 19(1):61-74.

[5] Daille, B. (1994). Approche mixte pour l'extraction automatique de terminologie: statistiques lexicales et filtres linguistiques. PhD thesis, Universit Paris 7. 1994


作者介绍

图片

于德发
目前就职于阅文集团智能业务中心,搜索算法策略研发工程师

图片

刘四维
目前就职于阅文集团智能业务中心,是智能业务后端技术负责人


继续滑动看下一个
阅文技术
向上滑动看下一个