论坛首页 Java企业应用论坛

应网友需求发布IKAnalyzer3.1.1GA2

浏览 14417 次
精华帖 (8) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-11  
http://blog.fulin.org/2009/07/about_analyzer_of_sitesearch.html

稍微作了一个对比,最后选择了你的 ik ,感谢你的辛苦工作和无私分享!

提一个小问题:
compareAnalyzers: (skey) : 等等等等
paoding: (0 ms)
等等 | 等等 | 等等 |
-imdict: (0 ms)
等等 | 等等 |
-----ik: (0 ms)
等等等等 | 等等 | 等等 | 等等 |
-mmseg4j: (0 ms)
等等 | 等等 |

后面三个词是否应该排除一下重复结果呢?


另外,paoding 有自动检测词库更新的功能,ik 是否有这方面的打算?如果没有,我可能就需要自己动手 hack 了
0 请登录后投票
   发表时间:2009-08-11  
tangfl 写道
http://blog.fulin.org/2009/07/about_analyzer_of_sitesearch.html

稍微作了一个对比,最后选择了你的 ik ,感谢你的辛苦工作和无私分享!

提一个小问题:
compareAnalyzers: (skey) : 等等等等
paoding: (0 ms)
等等 | 等等 | 等等 |
-imdict: (0 ms)
等等 | 等等 |
-----ik: (0 ms)
等等等等 | 等等 | 等等 | 等等 |
-mmseg4j: (0 ms)
等等 | 等等 |

后面三个词是否应该排除一下重复结果呢?


另外,paoding 有自动检测词库更新的功能,ik 是否有这方面的打算?如果没有,我可能就需要自己动手 hack 了


1.关于你上面提到的例子中的3个等等,是不同位置上的,分别是0-2 ; 1-3 ;2-4的,因此不能进行重复排除。IK的算法是采用迭代式搜索,因此,它会检查出从任何位置上开始的词语。

2.IK对词库的管理,个人感觉应该更适合动态更新。因为它提供了词典API,你可以将数据库中的词典表通过API方式,添加到词典中,而不是去修改词典文本,当然你可以使用自己的词典文本,通过自己的动态加载程序读入后,再通过API向IK添加,这样的设计是不是比直接修改IK来的耦合度更低?!

0 请登录后投票
   发表时间:2009-08-11  
linliangyi2007 写道
tangfl 写道
http://blog.fulin.org/2009/07/about_analyzer_of_sitesearch.html

稍微作了一个对比,最后选择了你的 ik ,感谢你的辛苦工作和无私分享!

提一个小问题:
compareAnalyzers: (skey) : 等等等等
paoding: (0 ms)
等等 | 等等 | 等等 |
-imdict: (0 ms)
等等 | 等等 |
-----ik: (0 ms)
等等等等 | 等等 | 等等 | 等等 |
-mmseg4j: (0 ms)
等等 | 等等 |

后面三个词是否应该排除一下重复结果呢?


另外,paoding 有自动检测词库更新的功能,ik 是否有这方面的打算?如果没有,我可能就需要自己动手 hack 了


1.关于你上面提到的例子中的3个等等,是不同位置上的,分别是0-2 ; 1-3 ;2-4的,因此不能进行重复排除。IK的算法是采用迭代式搜索,因此,它会检查出从任何位置上开始的词语。

2.IK对词库的管理,个人感觉应该更适合动态更新。因为它提供了词典API,你可以将数据库中的词典表通过API方式,添加到词典中,而不是去修改词典文本,当然你可以使用自己的词典文本,通过自己的动态加载程序读入后,再通过API向IK添加,这样的设计是不是比直接修改IK来的耦合度更低?!



我已经实现了在一个检测线程中调用 api
public static void loadExtendWords(List<String> extWords)
但是我不确定这个 api 是线程安全的。
当更新 ik 的词典的时候,对 IKAnalyzer 实例的调用是否需要额外的锁?
0 请登录后投票
   发表时间:2009-08-11   最后修改:2009-08-11
tangfl 写道
linliangyi2007 写道
tangfl 写道
http://blog.fulin.org/2009/07/about_analyzer_of_sitesearch.html

稍微作了一个对比,最后选择了你的 ik ,感谢你的辛苦工作和无私分享!

提一个小问题:
compareAnalyzers: (skey) : 等等等等
paoding: (0 ms)
等等 | 等等 | 等等 |
-imdict: (0 ms)
等等 | 等等 |
-----ik: (0 ms)
等等等等 | 等等 | 等等 | 等等 |
-mmseg4j: (0 ms)
等等 | 等等 |

后面三个词是否应该排除一下重复结果呢?


另外,paoding 有自动检测词库更新的功能,ik 是否有这方面的打算?如果没有,我可能就需要自己动手 hack 了


1.关于你上面提到的例子中的3个等等,是不同位置上的,分别是0-2 ; 1-3 ;2-4的,因此不能进行重复排除。IK的算法是采用迭代式搜索,因此,它会检查出从任何位置上开始的词语。

2.IK对词库的管理,个人感觉应该更适合动态更新。因为它提供了词典API,你可以将数据库中的词典表通过API方式,添加到词典中,而不是去修改词典文本,当然你可以使用自己的词典文本,通过自己的动态加载程序读入后,再通过API向IK添加,这样的设计是不是比直接修改IK来的耦合度更低?!



我已经实现了在一个检测线程中调用 api
public static void loadExtendWords(List<String> extWords)
但是我不确定这个 api 是线程安全的。
当更新 ik 的词典的时候,对 IKAnalyzer 实例的调用是否需要额外的锁?

IK词典API中的更新是线程安全的
0 请登录后投票
   发表时间:2009-08-12  
你好! 想請問個問題!
在自訂的辭典中,
是不是英文部份會沒有效果!
因為我在自己的英文辭典中,加入了 "absolute expression"
但是斷詞器還是把它拆成 "absolute" 、 "expression" 兩個了!

想請問,是否斷詞系統沒有特別對英文作匹配處理!
還是你有提供什麼api輔助?



0 请登录后投票
   发表时间:2009-08-12  
compareAnalyzers: (skey) : A236Kitty
paoding: (0 ms)
236 | kitty | 236kitty | a236kitty |
-imdict: (0 ms)
a | 236 | kitti |
-ik-max: (1 ms)
a236kitty | 236 |
-ikmost: (0 ms)
a236kitty | 236 |
-mmseg4j: (0 ms)
a | 236 | kitty |

在字母和数字混排的时候(品牌,型号等等,比较常见),ik 的处理逻辑是怎样的?我觉得 paoding 的结果似乎更接近搜索引擎的需求一些
0 请登录后投票
   发表时间:2009-08-12  
tangfl 写道
compareAnalyzers: (skey) : A236Kitty
paoding: (0 ms)
236 | kitty | 236kitty | a236kitty |
-imdict: (0 ms)
a | 236 | kitti |
-ik-max: (1 ms)
a236kitty | 236 |
-ikmost: (0 ms)
a236kitty | 236 |
-mmseg4j: (0 ms)
a | 236 | kitty |

在字母和数字混排的时候(品牌,型号等等,比较常见),ik 的处理逻辑是怎样的?我觉得 paoding 的结果似乎更接近搜索引擎的需求一些


IK的处理分为两个部分;
1.对英文的处理,这部分完成是采用了Lucene的 StandardAnalyzer 的分词策略,将数字和字母连接一起。
2.对数词的处理,则是会将数词单独切分。
因此就出现了 a236kitty | 236 |
0 请登录后投票
   发表时间:2009-08-12   最后修改:2009-08-12
andylau8250 写道
你好! 想請問個問題!
在自訂的辭典中,
是不是英文部份會沒有效果!
因為我在自己的英文辭典中,加入了 "absolute expression"
但是斷詞器還是把它拆成 "absolute" 、 "expression" 兩個了!

想請問,是否斷詞系統沒有特別對英文作匹配處理!
還是你有提供什麼api輔助?


是的,对英文处理不采用词典,而采用分隔符识别,因此添加词典是无效的
0 请登录后投票
   发表时间:2009-08-13  
linliangyi2007 写道
tangfl 写道
compareAnalyzers: (skey) : A236Kitty
paoding: (0 ms)
236 | kitty | 236kitty | a236kitty |
-imdict: (0 ms)
a | 236 | kitti |
-ik-max: (1 ms)
a236kitty | 236 |
-ikmost: (0 ms)
a236kitty | 236 |
-mmseg4j: (0 ms)
a | 236 | kitty |

在字母和数字混排的时候(品牌,型号等等,比较常见),ik 的处理逻辑是怎样的?我觉得 paoding 的结果似乎更接近搜索引擎的需求一些


IK的处理分为两个部分;
1.对英文的处理,这部分完成是采用了Lucene的 StandardAnalyzer 的分词策略,将数字和字母连接一起。
2.对数词的处理,则是会将数词单独切分。
因此就出现了 a236kitty | 236 |


当字母连续出现超过一定的阈值,比如3个字母的时候,看起来像是一个英文单词了,不知道是否可以也单独切分出一个结果来呢?
0 请登录后投票
   发表时间:2009-08-13  
compareAnalyzers: (skey) : Y550A-TSI(H)(灰白蓝红)
paoding: (0 ms)
y | 550 | tsi | a-tsi | 550a-tsi | y550a-tsi | h | 灰白 | 蓝红 |
-imdict: (1 ms)
y | 550 | a | tsi | h | 灰白 | 蓝 | 红 |
-ik-max: (0 ms)
y550a-tsi | 550 | h | 灰白 | 白 | 蓝 | 红 |
-ikmost: (0 ms)
y550a-tsi | 550 | h | 灰白 | 白 | 蓝 | 红 |
-mmseg4j: (1 ms)
y | 550 | a | tsi | h | 灰白 | 蓝 | 红 |

关于单词之间的连接符,是不是可以考虑单独处理一下?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics