精华帖 (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 了 |
|
返回顶楼 | |
发表时间: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来的耦合度更低?! |
|
返回顶楼 | |
发表时间: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 实例的调用是否需要额外的锁? |
|
返回顶楼 | |
发表时间: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中的更新是线程安全的 |
|
返回顶楼 | |
发表时间:2009-08-12
你好! 想請問個問題!
在自訂的辭典中, 是不是英文部份會沒有效果! 因為我在自己的英文辭典中,加入了 "absolute expression" 但是斷詞器還是把它拆成 "absolute" 、 "expression" 兩個了! 想請問,是否斷詞系統沒有特別對英文作匹配處理! 還是你有提供什麼api輔助? |
|
返回顶楼 | |
发表时间: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 的结果似乎更接近搜索引擎的需求一些 |
|
返回顶楼 | |
发表时间: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 | |
|
返回顶楼 | |
发表时间:2009-08-12
最后修改:2009-08-12
andylau8250 写道 你好! 想請問個問題!
在自訂的辭典中, 是不是英文部份會沒有效果! 因為我在自己的英文辭典中,加入了 "absolute expression" 但是斷詞器還是把它拆成 "absolute" 、 "expression" 兩個了! 想請問,是否斷詞系統沒有特別對英文作匹配處理! 還是你有提供什麼api輔助? 是的,对英文处理不采用词典,而采用分隔符识别,因此添加词典是无效的 |
|
返回顶楼 | |
发表时间: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个字母的时候,看起来像是一个英文单词了,不知道是否可以也单独切分出一个结果来呢? |
|
返回顶楼 | |
发表时间: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 | 灰白 | 蓝 | 红 | 关于单词之间的连接符,是不是可以考虑单独处理一下? |
|
返回顶楼 | |