`
edwardpro
  • 浏览: 317538 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

<![CDATA[lucene分词算法概论以及中文分词的猜想]]>

阅读更多
趁着清明放假的大好岁月,花了点洗衣服的时间看了点lucene的源码,主要想看看分词那部分。
luncene分词的大概过程是这样的:
1 截断单词
2 过滤干扰信息
3 写入结果

截断,对于英文来书很简单就是用空格和标点符号以及一些特殊用词,这些在系统里已经定义好,当然你也可以适时地改变一下。
过滤,在它的标准算法中会对如下的符号进行过滤:'s 'S  . 这样几种。
写入,这个顾名思义啦

下面谈谈我对中文分词的猜想,之前也用过je分词这样所谓成功作品,但无论性能还是效果都无法达到我的要求,而且它又不公开源码,令人非常失望,所以目前我使用的依然是luncene中的标准分词,也就是单字分词,但单字分词的问题也很明显消耗了极大的存储空间,目前在非压缩状态下,索引是原始文档的1.2~1.3倍之多,这是随着数据积累挺令我担心的问题。所以不得不思考中文的算法过程,我设想的算法应该是这样:
1 截断,利用分词库和常用介词表进行,其中分词库采用首字单词长度逆向排序法匹配,过程:
首先将词库按首字放入hash,然后将同首字的按照长度逆序排列
然后分词的时候先按单字分开,然后依据分词表,匹配 n次 (n是首字列表里的元素个数)并且允许重复匹配,比如中国 中国人 需要重复匹配。
之后同样去除标点符号等干扰因素。
那么我们现在来是想一下它的算法复杂度:
应该是: len(str)×n(str【i】)
试验更高级的算法在多词匹配时利用递归,将后一个字的算法也同时写入,或将减少其算法复杂度。
下周刊有时间的时候尝试写一个分词来看看,是否合理。

Tags - 分词 , 算法
分享到:
评论

相关推荐

    微信小程序支付(已调试通过).rar

    微信小程序支付JSAPI交易类型 已通过测试 返回例子如下: &lt;xml&gt;&lt;return_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/return_code&gt; &lt;return_msg&gt;&lt;![CDATA[OK]]&gt;&lt;/return_msg&gt; &lt;result_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/result_code&gt;

    微信开发文档

    [CDATA[toUser]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[fromUser]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;1348831860&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[text]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[this is a test]]&gt;&lt;/...

    testlink用例导入导出

    [CDATA[&lt;p&gt;Communication Systems of all types&lt;/p&gt;]]&gt;&lt;/details&gt; &lt;testsuite name="Hand-held devices"&gt; &lt;details&gt;&lt;![CDATA[]]&gt;&lt;/details&gt; &lt;testcase name="10G shock"&gt; &lt;summary&gt;&lt;![CDATA[]]&gt;&lt;/summary&gt; ...

    微信时间开发源码

    [CDATA[%s]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;%s&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[%s]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[%s]]&gt;&lt;/Content&gt; &lt;FuncFlag&gt;0&lt;/FuncFlag&gt; &lt;/xml...

    一个简单的xml文件

    ATTLIST 电话 类别 CDATA "移动电话"&gt; ]&gt; &lt;联系人列表&gt; &lt;说明&gt;&content;&lt;/说明&gt; &lt;联系人&gt; &lt;姓名&gt;刘保文&lt;/姓名&gt; &lt;ID&gt;201003101115&lt;/ID&gt; &lt;公司&gt;腾飞汇通有限公司&lt;/公司&gt; &lt;电话 类别="移动电话"&gt;18993380967&lt;/...

    Mybatis 中的&amp;lt;![CDATA[ ]]&amp;gt;浅析

    [CDATA[ ]]&gt; 用于包含 Mybatis 的标签(如 `&lt;if&gt;`、`&lt;where&gt;`、`&lt;choose&gt;` 等),否则这些标签将不会被解析。 实例如下:&lt;select id="allUserInfo" parameterType="java.util.HashMap" resultMap="userInfo1"&gt; &lt;!...

    asp微信开发者回复代码

    "&lt;Description&gt;为企业提供专业的、全面的、量身定制的企业业管理咨询、员工培训、企业品牌营销策划、竞争性行业分析、IT信息咨询、酒店以及职工餐饮托管等服务。" &_ "&lt;/Description&gt;" &_ "&lt;PicUrl&gt;&lt;![CDATA...

    上传xml文档

    &lt;preconditions&gt;&lt;![CDATA[1.使用udp_bi用户在PLSQL正常登陆UAT数据库&lt;br&gt; (UAT数据库IP: 10.0.13.178)&lt;br&gt; 2.数据库脚本已下载至本地环境]]&gt;&lt;/preconditions&gt;&lt;importance&gt;&lt;![CDATA[2]]&gt;&lt;/importance&gt;&lt;steps&gt; &lt;step&gt;

    JAVA对象转换成XML(CDATA)

    [CDATA[ 文本内容 ]]&gt;`,其中"文本内容"部分不能包含字符串"]]&gt;",以防止提前结束CDATA段。同时,CDATA段不能嵌套,也就是说,一个CDATA段内部不能再有另一个CDATA段。 要将Java对象转换成XML并包含CDATA,我们可以...

    省市区表,xml省市区

    自己将数据导入到xml中的,希望有需要的朋友可以自己下载,格式为&lt;!DOCTYPE PCAroot[ &lt;!ELEMENT PCAroot (Province*)&gt; &lt;!ELEMENT Province (City*)&gt; &lt;!ELEMENT City (Area*)&gt; &lt;!ELEMENT Area (#PCDATA)&gt; &lt;!...

    微信小程序支付统一下单报错CDATA[商户号mch_id与appid不匹配]

    [CDATA[FAIL]]&gt;&lt;/return&gt; &lt;return&gt;&lt;![CDATA[商户号mch_id与appid不匹配]]&gt;&lt;/return&gt; &lt;/xml&gt; 原因是我拿到的商户号不是这个公众号的。一定要检查是不是这个公众号的商户号。 免责声明:本站所有文章和...

    chapter23 实践习题1

    ATTLIST course course_id ID #REQUIRED title CDATA #REQUIRED dept_name IDREF #REQUIRED credits CDATA #REQUIRED&gt; &lt;!ELEMENT instructor EMPTY&gt; &lt;!ATTLIST instructor IID ID #REQUIRED name CDATA #REQUIRED ...

    一道数据库面试题

    ENTITY % idType "ID CDATA #IMPLIED"&gt; &lt;!NOTATION ID NOTATION URI 'http://example.com/unique-id'&gt; ]&gt; &lt;UserGroupSystem&gt; &lt;Group id="group1" ParentGroup="root"&gt; &lt;GroupName&gt;管理员组&lt;/GroupName&gt; ...

    XML的DTD教程

    **示例**:定义一个`&lt;note&gt;`元素,其包含`&lt;to&gt;`、`&lt;from&gt;`、`&lt;heading&gt;`和`&lt;body&gt;`四个子元素,其中`&lt;to&gt;`、`&lt;from&gt;`和`&lt;heading&gt;`元素仅包含文本数据,而`&lt;body&gt;`元素可以包含文本和子元素。 ```xml &lt;!ELEMENT note...

    xml实现留言簿xml+asp+xml+css

    [CDATA[留言内容]]&gt;&lt;/content&gt; &lt;/message&gt; &lt;/messages&gt; &lt;/gbook&gt; ``` 4. **DTD定义**: - 用于定义XML文档的结构和约束条件。 - 例如,`&lt;gbook&gt;` 元素包含了 `&lt;info&gt;` 和 `&lt;messages&gt;` 两个子元素。 ```xml...

    XML一些练习题

    &lt;价格 货币类型="日元" 货币单位="元"&gt;12000&lt;/价格&gt; &lt;图片 source="LOVE YOU.gif"/&gt; &lt;/笔记本电脑&gt; &lt;/产品目录&gt; ``` 2. 针对 XML 文件编写 CSS 在这个练习题中,我们需要编写 CSS 使得三个“Student”标记中的...

    Flash XML 树结构详细操作示意图 Ver2.0

    [CDATA[image1-1.jpg]]&gt;&lt;/image&gt; &lt;image name="garden-1"&gt;&lt;![CDATA[image2-1.jpg]]&gt;&lt;/image&gt; &lt;image name="shop-1"&gt;&lt;![CDATA[image3-1.jpg]]&gt;&lt;/image&gt; &lt;/images&gt; &lt;images&gt; &lt;image name="school-2"&gt;&lt;![CDATA...

    DTD教程,来自3cSchool

    &lt;/body&gt; &lt;/note&gt; ``` 在这个例子中,`&lt;!DOCTYPE note [...]&gt;`定义了文档类型为`note`,并且规定了`note`元素包含`to`、`from`、`heading`和`body`这四个子元素,每个子元素都允许包含字符数据(#PCDATA)。 外部...

    Mobile Atlas Creator.exe

    [CDATA[http://t{$serverpart}.tianditu.cn/DataServer?T=cia_w&X={$x}&Y={$y}&L={$z}]]&gt;&lt;/url&gt; &lt;serverParts&gt;0 1 2 3 5 6 7&lt;/serverParts&gt; &lt;backgroundColor&gt;#00000000&lt;/backgroundColor&gt; &lt;/customMapSource&gt; &lt;/...

    第14讲 XML文件.ppt

    &lt;first_name&gt;Alan&lt;/first_name&gt; &lt;last_name&gt;Turing&lt;/last_name&gt; &lt;/name&gt; &lt;profession&gt;computer scientist&lt;/profession&gt; &lt;profession&gt;mathematician&lt;/profession&gt; &lt;profession&gt;cryptographer&lt;/profession&gt; &lt;/...

Global site tag (gtag.js) - Google Analytics