在网上看了别人写的,感觉挺好,收录下。
http://blog.sina.com.cn/s/blog_64d0b03c0101bcxk.html
中文分词做为自然语言处理的第一工序.有着十分重要的意义,在一定程度上可以说,没有分词,所谓的分类,句法树,聚类,特征词提取,文本摘要...都是空谈.分词用简单直白的方法处理就是建立一个自己的词库,然后用正向或逆向方式遍历句子,发现有在词库中的就进行切词,这样就能完成一个简单的分词程序.当然效率方面就有很多改进方式了.如词库的存储结构,程序是否建立单例模式,查询算法之类都会直接影响速率.这方面不再做过多讲解了.下面对今天的几个知识点做下补充讲解.
1.新词发现
由于我们是自已建立的词库,所以在词库的维护是很重要的,互联网每天都会产生一些新词,这时如果全由人工进行维护,则成本是相对较高且准确及时性上有待考量.这时可以考虑用程序的方式进行事先筛选和提取,然后以人工做较正.在程序方面有几种作法
a.信息熵:采用信息熵的方式来度量两个词之间的紧密程度.对于紧密程度高,而又不在我们词库中的词标识出来.如一篇文章里有"新长城办公室"六个字,而我们词库里只有"新","长城","办公室".则按照普适的这个将会被切成:新/长城/办公室 而这样的分词明显是不符合实际的.采用信息熵后可以解决这个问题.信息熵的一般公式为:
[img][/img]
解释起来其实也挺简单,就是如果x和y的出现相互独立,则P(x,y)的值和P(x)P(y)的值相等,因此I(x,y)为0.如果x和y密切相关,P(x,y)将比P(x)P(y)大很多,I(x,y)的值也就远大于0.如果x和y几乎不会相邻出现,而它们各自出现的概率又比较大,那么I(x,y)将取负值,这时候x和y负相关.于是大家就明白了.只要算出两个词的相关程度远大于0,我们设置一个阈值,当大于某个值时就将这两个词做为一个新词标注出来,为提高准确性,人工去较正即可.
b.从搜索日志里发现新词:这个应该很好理解,就是人们经常搜索什么什么,把搜索时的词入库检索,然后按查询的频次倒序一排也能有助于我们发现新词.如果我们的系统不提供,当然也可以直接借助现成的搜索引擎的相关搜索去发现了.
c.利用输入法来收集新词:搜狗输入法的新词维护还是不错的.所以余下的大家应该懂了:)
关于新词发现目前我所想到的是这么几种,欢迎大家补充.
2.有限状态机
中文分词时,有些词并不是通过词库匹配出来的,而是根据一定的规则自动识别的.常见的如数字,日期,邮箱,电话号码...当然可能有人说这直接用正则表达式就可以.确实是这样的.正则表达式完全可以实现,也是一种简单的处理方法.只是相比扩展性之类而言,可能还是有限状态机更好些.
有限状态机简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.是由状态(State)、变换(Transition)和行动(Action)组成的行为模型。有限状态机首先在初始状态(Start State),接收输入事件(Input Event)后转移到下一个状态.有限状态机通过条件(Guard)判断是否符合转移条件.具体的代码实现时间关系这里不做过多讲解
3.地点的识别
在做分词时经常需要对一些地点做切词.如北京市朝阳区幸福村中路,这时如果没有一个准确的切分方式,则分词结果是很糟糕的.我们一般的作法是这样的:以省市区县街道建筑标识来切分.如上面的词最后切为北京市(直辖市)/朝阳区(区)/幸福村中路(街道).而如何做到这样准确的切分呢,就需要以上面的标注级别来建立不同的词库.如省市区县网上有现成的数据库可以下,这里不多说,而对于一些街道名称也是可以有的,如北京的就直接上http://bj.cityhouse.cn/information/newstreet.html 抓取然后入库即可.这个网站也能抓取别的省市区县的街道名称.如安庆即为http://aq.cityhouse.cn/information/newstreet.html 有了这些词库后就可以进行有效的地点识别和切分了.只是在切分时仍需要注意一下混淆的问题.有些街道名称可能与省市名称相同,这时需要进行一下识别才行.
分享到:
相关推荐
同时,词典的维护和更新也需要考虑到新词的发现和专有名词的处理,这对于新闻、社交媒体等领域尤为重要。 在实际应用中,我们可以使用百度词典来开发自己的分词系统,或者作为现有分词算法的补充。例如,在信息检索...
中文分词作为中文自然语言处理中的一个重要环节,对于实现自动翻译、文本检索、语音识别等应用具有基础性的作用。与英文等西文相比,中文缺乏明显的词与词之间的分隔符(如空格),这使得中文分词变得更加复杂和困难...
在进行中文分词时,分词工具会根据词库中的词汇来进行切分。一个好的词库能够显著提高分词的准确率。例如,对于特定领域的文本处理,通常需要构建或扩展专门的领域词库,以便更好地识别专业术语。 #### 分词方法...
由于中文词汇之间没有明显的边界标记,因此中文分词成为中文自然语言处理中的首要步骤,对后续的信息检索、机器翻译、文本分类等应用具有重要意义。 #### 二、课题背景及研究现状 ##### 2.1 课题背景 随着互联网的...
在实际应用中,中文分词面临的挑战包括歧义、未登录词(新词或专有名词)以及多词表达等。例如,“苹果”既可以理解为水果,也可以指代科技公司Apple。因此,优秀的分词系统需要具备一定的语境理解和学习能力,以...
中文分词是将连续的汉字序列切分成具有独立语义的词语,例如将“我爱自然语言处理”拆分为“我”、“爱”、“自然语言”、“处理”。由于中文没有明显的词与词之间的边界,因此分词成为理解和处理中文文本的基础。 ...
2. Smart Chinese Analyzer:是专门为Solr设计的中文分词器,对停用词和词语切分有较好的处理,适合新闻、文章等文本的处理。 3. Paoding Analyzer:基于词典的分词器,拥有较高的分词准确率,支持用户自定义词典,...
中文分词是自然语言处理(NLP)领域中的基础任务,它涉及到将连续的汉字序列切分成具有语义意义的单个词汇,这对于理解和分析中文文本至关重要。本项目提供了一个基于词典的中文分词系统,它以高准确性为目标,确保...
高质量的新词发现技术可以在多个领域发挥重要作用,比如提升拼音输入法的准确性、加强社交媒体上的实时信息挖掘能力、增强分词系统的词表更新机制、改进舆情监测系统、提高突发事件检测效率以及优化热点信息提取等...
中文分词程序是自然语言处理(NLP)领域的一个关键环节,主要目的是将连续的汉字序列切分成具有语义意义的词语序列。这是因为中文没有明显的空格或标点符号来划分单词,所以需要通过特定算法进行分词。在这个场景中...
中文分词是自然语言处理中的一个基本任务,指的是将连续的汉字序列切分成具有语义意义的词汇序列。中文不同于英文等西方语言,在书写形式上不存在天然的词边界标识(如空格)。因此,中文分词成为进行后续自然语言...
3. **智能分析**:除了基础的词语切分,庖丁解牛还具备词语消歧、新词发现、关键词提取等高级功能,能够更好地适应互联网上的海量信息变化。 4. **易用性**:对于开发者来说,庖丁解牛的API设计简洁明了,易于集成...
在中文自然语言处理(NLP)领域,分词是预处理的重要步骤,它将连续的汉字序列切分成具有语义的词汇单元。"jieba"因其易用性和高效性而广受欢迎,尤其适合于对大量中文文本进行分析、挖掘和信息提取。 该项目的核心...
中文分词是自然语言处理中的关键技术之一,尤其在中文搜索引擎、信息检索、文本挖掘等领域扮演着重要角色。IKAnalyzer 是一款专门针对中文处理的开源分词器,它为 Lucene 搜索引擎提供高效的中文分词支持。Lucene 是...
中文分词是自然语言处理(NLP)中的基础任务,主要目标是将连续的汉字序列分割成具有独立语义的词语。在这个过程中,涉及到多个步骤和技术。以下是对中文分词流程以及汉语文本处理库HanLP的详细解析。 首先,**句子...
对于中英文混合的文本,分词任务更具挑战性,因为它需要同时处理中文字符和英文单词,确保正确地识别和切分两者。本文将围绕一个专门针对这种场景的中文分词器展开讨论。 首先,我们来看一下中文分词的基本原理。...