-
Notifications
You must be signed in to change notification settings - Fork 10.9k
索引分词缺少词 #519
Copy link
Copy link
Closed
Labels
Description
hi hankcs, 又遇到个问题想向你请教。
版本号
master分支
当前最新版本号是:221d2a9e152763afe77b6ffc966b570ee308fb6e
我使用的版本是:221d2a9e152763afe77b6ffc966b570ee308fb6e
我的问题
“评审委员会”的索引分词中带有“评审委员会”这个词,但是“商标评审委员会”的索引分词就没有“评审委员会”这个词。作为全切分的索引模式,我觉得对于“商标评审委员会”的切分应该将“评审委员会”也切出来。否则搜索"评审委员会"将会搜不到。
复现问题
触发代码
List<Term> termList = IndexTokenizer.segment("评审委员会");
for (Term term : termList)
{
System.out.println(term + " [" + term.offset + ":" + (term.offset + term.word.length()) + "]");
}
评审委员会/nt [0:5]
评审/vn [0:2]
委员会/nis [2:5]
委员/nnt [2:4]
List<Term> termList2 = IndexTokenizer.segment("商标评审委员会");
for (Term term : termList2)
{
System.out.println(term + " [" + term.offset + ":" + (term.offset + term.word.length()) + "]");
}
商标评审委员会/nt [0:7]
商标/n [0:2]
评审/vn [2:4]
委员会/nis [4:7]
委员/nnt [4:6]
其他信息
我查看了一下,感觉应该是在“使用用户词典合并粗分结果”这个部分出的问题。在Segment.java的384行将已经合并的词置空了,然后在Segment.java的302行将循环变量直接跳过了已合并的几项,导致了“商标评审委员会”这个词提出来之后,没有再继续判断是否有“评审委员会”,所以合并完用户词典后,词图里面没有“评审委员会”这个词,后面的索引模式全切分方法decorateResultForIndexMode也没办法识别这个词。
同理,只要是用户词典中存在两个互相包含的词,就只有一个能出来,例如:
铁道部运输局营运部货运营销计划处/nt [0:16]
铁道部/nis [0:3]
铁道/n [0:2]
运输局/nis [3:6]
运输/vn [3:5]
营运部/nz [6:9]
营运/vn [6:8]
货运/n [9:11]
运营/vn [10:12]
营销/vn [11:13]
计划处/nis [13:16]
计划/n [13:15]
铁道部运输局/nto [0:6]
铁道部/nis [0:3]
铁道/n [0:2]
运输局/nis [3:6]
运输/vn [3:5]
我试着改了几行代码,但是直接就报数组越界了,所以还是来向你求助了。
Reactions are currently unavailable