关于亚洲语言的的切分词问题(Word Segment)
2007-12-19 21:12
218 查看
对于中文来说,全文索引首先还要解决一个语言分析的问题,对于英文来说,语句中单词之间是天然通过空格分开的,但亚洲语言的中日韩文语句中的字是一个字挨一个,所有,首先要把语句中按“词”进行索引的话,这个词如何切分出来就是一个很大的问题。
首先,肯定不能用单个字符作(si-gram)为索引单元,否则查“上海”时,不能让含有“海上”也匹配。
但一句话:“北京天安门”,计算机如何按照中文的语言习惯进行切分呢?
“北京 天安门” 还是“北 京 天安门”?让计算机能够按照语言习惯进行切分,往往需要机器有一个比较丰富的词库才能够比较准确的识别出语句中的单词。
另外一个解决的办法是采用自动切分算法:将单词按照2元语法(bigram)方式切分出来,比如:
"北京天安门" ==> "北京 京天 天安 安门"。
这样,在查询的时候,无论是查询"北京" 还是查询"天安门",将查询词组按同样的规则进行切分:"北京","天安安门",多个关键词之间按与"and"的关系组合,同样能够正确地映射到相应的索引中。这种方式对于其他亚洲语言:韩文,日文都是通用的。
基于自动切分的最大优点是没有词表维护成本,实现简单,缺点是索引效率低,但对于中小型应用来说,基于2元语法的切分还是够用的。基于2元切分后的索引一般大小和源文件差不多,而对于英文,索引文件一般只有原文件的30%-40%不同,
目前比较大的搜索引擎的语言分析算法一般是基于以上2个机制的结合。关于中文的语言分析算法,大家可以在Google查关键词"wordsegment search"能找到更多相关的资料。
首先,肯定不能用单个字符作(si-gram)为索引单元,否则查“上海”时,不能让含有“海上”也匹配。
但一句话:“北京天安门”,计算机如何按照中文的语言习惯进行切分呢?
“北京 天安门” 还是“北 京 天安门”?让计算机能够按照语言习惯进行切分,往往需要机器有一个比较丰富的词库才能够比较准确的识别出语句中的单词。
另外一个解决的办法是采用自动切分算法:将单词按照2元语法(bigram)方式切分出来,比如:
"北京天安门" ==> "北京 京天 天安 安门"。
这样,在查询的时候,无论是查询"北京" 还是查询"天安门",将查询词组按同样的规则进行切分:"北京","天安安门",多个关键词之间按与"and"的关系组合,同样能够正确地映射到相应的索引中。这种方式对于其他亚洲语言:韩文,日文都是通用的。
基于自动切分的最大优点是没有词表维护成本,实现简单,缺点是索引效率低,但对于中小型应用来说,基于2元语法的切分还是够用的。基于2元切分后的索引一般大小和源文件差不多,而对于英文,索引文件一般只有原文件的30%-40%不同,
自动切分 | 词表切分 | |
实现 | 实现非常简单 | 实现复杂 |
查询 | 增加了查询分析的复杂程度, | 适于实现比较复杂的查询语法规则 |
存储效率 | 索引冗余大,索引几乎和原文一样大 | 索引效率高,为原文大小的30%左右 |
维护成本 | 无词表维护成本 | 词表维护成本非常高:中日韩等语言需要分别维护。 还需要包括词频统计等内容 |
适用领域 | 嵌入式系统:运行环境资源有限 分布式系统:无词表同步问题 多语言环境:无词表维护成本 | 对查询和存储效率要求高的专业搜索引擎 |
相关文章推荐
- 关于java语言中方法参数传递问题
- 关于xp英文版安装多国语言包的问题
- 关于iar汇编语言添加头文件问题
- 【语言处理与Python】4.3风格的问题/4.4函数:结构化编程的基础/4.5更多关于函数
- word中关于mathtype公式对不齐的问题
- 关于Java语言for循环内外变量定义的问题
- 关于Word中审阅的一个问题!
- 学习笔记——关于 while(cin>>word){} 如何停止的问题
- 关于java和c语言中,变量重名问题
- 关于DotNetNuke(DNN)的语言问题
- 关于 页面多语言支持的纯前端(JQuery插件)实现及 .json 文件读取报404的问题
- 关于word自动换页的问题,不希望标题后面的文字自动换页
- python语言中关于素数的问题
- 关于VS编译DevExpress默认产生几个多余的语言包的问题解决
- 关于在WORD中MathType编辑公式居中及编号右对齐问题的解决办法
- 关于Word、Execl、Outlook的几个小问题
- 关于Web程序打开Word、Excel后,不能关闭的问题的一个解决办法
- 关于word插入特殊符号不显示的问题及解决
- C++ Primer 关于while(cin>>word) 退出循环问题
- 关于word页眉页脚的设置-页码不连续的问题