`

简单的新词识别

 
阅读更多

最近工作中涉及到新词的识别,在漫长的程序运行期间,记录下相关心得。这里为较原始的新词识别算法,起到一个了解的作用。

 

新词: 指未在已经训练完的词库或语料库中大量出现的词称为新词(很多情况下也成为未登录词)。

 

 

目前新词识别的技术主要包括3个方向:1. 基于规则;2. 基于统计概率;3. 规则和统计相结合;

 

1. 基于统计

基于统计的新词识别技术包括 {词之间互信息词出现频率}

1.1 互信息

互信息之统计模型中衡量2个随机变量X,Y之间的关联程度,而在新词的识别中则特指相邻2个词之间的关联程度。

MI(X,Y)=log2(p(X,Y)/p(X)*P(Y))

那么当『XY』未在已经训练完的词库中出现,且该互信息高于某一阀值值,那么我们就假定该词为新词。

 

1.2 频率

当某一组连续相邻的字在新的语料库或网络日志中大量出现而未在词库中登记时,那么我们也可假定该词为新词。

这种方法思路很简单,实现的代码也相当容易,但是该方法必须基于大规模的语料库才能准确识别。

 

:此处当处理海量语料库时 性能问题是最需要关注的。下文将详细讲解。

 

 

2. 新词识别工作

 

在本文中假设还未建立训练词库,需训练。

 

2.1 大规模语料库准备

2.2 候选词选取方案

2.3 训练词库

2.4 统计并选取新词

 

2.1 大规模语料库

很多情况下都可以通过网络爬虫获取相关网络富文本,然后通过Tika处理得到简单txt文本;或者可以分析用户日志等数据获得;或从数据库获取用户留言日志;

 

2.2 候选词选取

候选词的选取在很大程度上会影响程序的性能。主要包括2类方法:1)基于分词算法的N元词组;2)基于字的N元词组

在使用分词算法的情况下,需要分词词库,而N元词组就不需要词库。

 

2.2.1 分词算法

若语料:“中文新词识别”,若分词后结果:中文/,新/,词/,识别/。

然后候选2元词组:中文新/,新词/,词识别/。最后统计词频以此来决定是否加入词库(分词词库必须加入该词库)。

 

2.2.2 N元词组

若语料:“中文新词识别”,若2元词组,则结果:中文/,文新/,新词/,词识/,识别/。然后统计该2元词组的词频,并决定是否加入词库。

 

从上面2种方法可以看到按字的N元词组会分出更多的词组,需要处理更多的数据,效率会较低,但这种方法较全面,不会遗漏数据,不受分词词库影响。比如:“文新” 这个词组在分词中会遗漏,而按字N元不会遗漏。

 

2.3 统计并确定是否加入词库

 

 

 

 

2.4 新词获取

新词获取的前面几个步骤与上文一样,包括候选词的获取。然后统计该词频率或计算相邻词之间的互信息,以此与设定的阀值进行比较决定是否为新词。最后将识别出来的新词再词添加到词库中,不断学习不断识别,以此循环。

 

 

 

至此,简单的新词识别工作完成,只要语料库足够强大,统计方法会得到较好的效果,且方法简单。

————后续将继续深入新词识别算法,采用语言模型来进行新词识别,上述方法较为原始。————

 

注: 考虑到海量语料库和词频统计的特点,非常适合在Hadoop平台进行mapReduce模型计算。

下一步将新词识别应用在Hadoop平台上。

  • 大小: 19.2 KB
  • 大小: 19.9 KB
分享到:
评论

相关推荐

    leetcode2-nlp-notebook:NLP领域常见任务的实现,包括新词发现,以及基于pytorch的词向量、中文文本分类、实体识别、

    leetcode 2 项目描述 NLP ...该文件夹内记录机器学习/深度学习一些知识点的简单总结。 6. 该文件夹内记录leetcode最热门的100道算法题,部分解题思路搬运自leetcode题解。 对应论文 [1] Convolutional

    [易语言源码]傻瓜化聊天机器人+支持学习

    1、实现原理也很简单,用的超级列表框保存词和回复内容,查询模式分为通配 内容*或者*内容* 可以自己选择,查询方式是利用超级列表框的查找表项和寻找文本实现的。 2、当识别到词汇中没有的词汇,会进入预学习模式...

    Ansj中文分词

    Ansj中文分词是一个完全开源的、基于Google语义模型+条件随机场模型的中文分词的Java实现,具有使用简单、开箱即用等特点。 Ansj分词速度达到每秒钟大约100万字左右(Mac Air下测试),准确率能达到96%以上。 ...

    有关中文分词的源代码c++实现的

    本程序简单的实现了中文的分词,采用的是基于词典的逆向最大匹配的方法,同时包含了新词的识别以及部分歧义处理。

    pyhanlp安装介绍和简单应用

    功能:中文分词 词性标注 命名实体识别 依存句法分析 关键词提取新词发现 短语提取 自动摘要 文本分类 拼音简繁 中文分词只是第一步;HanLP从中文分词开始,覆盖词性标注、命名实体识别、句法分析、文本分类等常用...

    易搜索 站内全文检索搜索引擎 v1.0.rar

    但由于并非专门的搜索引擎算法及结构,也只能是杯水车薪、望洋兴叹,如1、并不能进行相关度排序,2、必须手动或者半自动完全关键词,3、同样不支持超长词条搜索,4、搜全率低,5、新词不能识别,6、只能对CMS范围内...

    matlab最简单的代码-uchronia-time-series:集合预报时间序列库

    matlab最简单的代码Uchronia-用于在C ++中进行合奏模拟和预测的时间序列处理 概述 Uchronia是一个C ++库,旨在处理多维时间序列及其集合。 是针对我们世界的假设或虚构时期的文学新词。 对于主要设计来处理回顾性...

    易搜索站内全文检索搜索引擎

    但由于并非专门的搜索引擎算法及结构,也只能是杯水车薪、望洋兴叹,如1、并不能进行相关度排序,2、必须手动或者半自动完全关键词,3、同样不支持超长词条搜索,4、搜全率低,5、新词不能识别,6、只能对CMS范围内...

    chatbot:基于文本的学习机器人

    一种基于文本的学习机器人,试图在一段时间内了解其用户。 它可以在Raspberry Pi和Windows上运行。 我已经断断续续地研究这个聊天机器人大约 17 年了,虽然我取得了...ID 号用于识别某个类别的特定成员,通常人们也可

    自己动手写搜索引擎(罗刚著).doc

    5.1.6 新词发现 101 5.1.7 隐马尔可夫模型 102 5.2 语法解析树 104 5.3 文档排重 105 5.4 中文关键词提取 106 5.4.1 关键词提取的基本方法 106 5.4.2 关键词提取的设计 107 5.4.3 从网页提取关键词 107 5.5 相关搜索...

Global site tag (gtag.js) - Google Analytics