-
Notifications
You must be signed in to change notification settings - Fork 2.3k
歧义纠正辞典
mumu edited this page Mar 20, 2018
·
4 revisions
#歧义纠正辞典
很多时候.分词发生歧异不是很好调整.用户需要更强的规则来约束所以.ansj中增加了歧义消除的一个强规则方式
在library/ambiguity.dic
中你会看到如下内容
习近平 nr
李民 nr 工作 vn
三个 m 和尚 n
的确 d 定 v 不 v
大 a 和尚 n
张三 nr 和 c
动漫 n 游戏 n
邓颖超 nr 生前 t
这里例子告诉计算机
如果你发现 李民工作 ---> 李/民工/作 纠正为 --->李民/工作/ 这种类型..
第一列是识别串.第二列是分词结果.奇数行是词.偶数行是词性.
ps:这个是优先分词运行的.所以添加时候要谨慎...
当然 ambiguity.dic 的路径你可以在分词调用前..
用 MyStaticValue.ambiguityLibrary = "歧异词典的路径" 来设定
####歧义纠正是Ansj分词的最后最后的大招了。杀伤力巨大。谨慎使用。极可能造成其他的错误。
下面给一个例子。是动态添加的。
//ansj_sej 5.1.x
{
Value value = new Value("川府办", "川府办", "n");
Library.insertWord(AmbiguityLibrary.get(), value);
value = new Value("京财企业务", "京财企", "nt", "业务", "j");
Library.insertWord(AmbiguityLibrary.get(), value);
//测试发现NLP新词发现导致 `川府办发` 依然被搞成了 `川府 办发` 因为字典分词在新词发现之前调用
System.out.println(NlpAnalysis.parse("据说川府办发的发文很厉害"));
System.out.println(NlpAnalysis.parse("京财企业务繁忙"));
}
//歧义纠正
Value value = new Value("川府办", "川府办", "n");
Library.insertWord(UserDefineLibrary.ambiguityForest, value);
value = new Value("京财企业务", "京财企", "nt", "业务", "j");
Library.insertWord(UserDefineLibrary.ambiguityForest, value);
System.out.println(NlpAnalysis.parse("据说川府办发的发文很厉害"));;
System.out.println(NlpAnalysis.parse("京财企业务繁忙"));;