-
Notifications
You must be signed in to change notification settings - Fork 10.2k
FAQ
hankcs edited this page Oct 13, 2019
·
20 revisions
这里收录了一些常见问题,在盲目发issue之前,请善用CTRL+F来寻找你感兴趣的问题,其很有可能就在下面。社区不再回复重复的提问,谢谢合作。
- 修改了任何词典都必须删除缓存才能生效,请仔细阅读文档!
- 请遵循首页文档HanLP词典格式,目前该txt格式不支持含有空格的词条,csv才支持
- 算法不保证词典中的词语一定分出来,世界上不存在这样的算法。很多人不理解这个问题,以为用户词典中的词语一定会分出来。事实上,这个需求是自相矛盾的,稍微思考一下就能明白。假如用户词典中一共3个词语:
商品
、和服
、服务
,那么“商品和服务
”到底怎么分才能满足这些用户呢?无论怎么分词,这3个词语都不可能同时出现。 - 中文分词≠词典,词典无法解决中文分词。也许你以为往词典中添加“
川普
”,并且用户词典优先级最高的话,就可以解决眼前的“普京与川普
通话”这个句子。但在你没注意到的地方,有更多类似“四川普
通话”“银川普
通高考”“唐纳德·川普
”(本该是一个词)的句子会发生错误。HanLP坚持的是以统计为主,规则词典为辅的思路,力争做到即使用户加入“川普”这样的词条,仍然能区分“四川普通人”这样的效果。 - 在
v1.3.5
之后有一个com.hankcs.hanlp.seg.Segment#enableCustomDictionaryForcing
方法,可在充分理解上述几点之后开启。
- 参考上一个问题。
- 词语、词性、词频之间的分隔符为空格,所以词语本身不能含有空格,否则词语的某个部分会被视作词性,引发上一个问题。如果你的词语包含空格,用
.csv
作为词典的文件名后缀。
HanLP只兼容文本格式的CRF++模型,只有文本才是世界通用的,这是最初的设计宗旨之一。请阅读《CRF++模型格式说明》以了解如何训练文本格式的CRF++模型。
- 请先学习“词典分词”与“统计模型分词”的区别(必须)!
- HanLP中有许多分词器,实现了几乎所有的分词算法 其中一些是前者,一些是后者,可以从继承关系区别
- 所以不要用“最大词”“最长词”之类的描述以偏概全,两大类分词器的原理完全不同。
- 如果你能区分“词典分词”与“统计模型分词”的话,那么你的问题就全明白了。否则,我只能简单地告诉你,词典分词是按最长词,统计分词可以调整模型来达到你的目的。
- 这是Java程序员的基础
- 有多种方式,请挑一个。
- https://github.com/hankcs/HanLP/issues/419
- 分词标准取决于语料库标准,在开发分词器之前就一切都确定了。
- HanLP附带了训练工具,欢迎按你的标准自备语料,然后用此工具训练。
- 没有,所有人都是平等的。
- https://github.com/hankcs/HanLP/issues/445
- 我只开发过Lucene插件。Solr\ElasticSearch理论上应该基于Lucene。
- 但其他插件作者可能有自己的实现,并没有调用HanLP的自定义词典、停用词功能。所以推荐不依赖插件,直接用Lucene\Solr\ES自带的filter机制实现停用词。
- 这实际上是一种业务逻辑的分离,分词和过滤本来就应该是两个不同的业务。既然Lucene官方都是将其分离开来,我们为何要越俎代庖呢?
- 不过我可以提供额外帮助,只需你fork一份,用JUnit复现你的问题,提供友好的开发测试环境。
https://github.com/hankcs/HanLP/issues/448
https://github.com/hankcs/HanLP/issues/444
- 可以通过增删改BiGram、CoreDictionary相应词条纠正错误。这种纠正方式类似于一种“增量训练”,对统计模型的破坏最小。
- 参考实例:https://github.com/hankcs/HanLP/issues/384
https://github.com/hankcs/HanLP/issues/407
- HanLP已经留有完善的IO接口、配置文件,不推荐使用如此丑陋的方法破坏类库的完整性。
- 一意孤行的用户请参考如下资料:
- https://github.com/hankcs/HanLP/issues/380
- https://github.com/hankcs/HanLP/issues/182
- 实现com.hankcs.hanlp.corpus.io.IIOAdapter接口即可在不同的平台(HDFS、Redis等)上运行HanLP
- 这些“平台”包括且不限于jar包,如果你写一个TapeIOAdapter,你甚至可以从磁带中加载HanLP的data。
- 参考com.hankcs.demo.DemoStopWord写个自己的FILTER就行了。
- https://github.com/hankcs/HanLP/issues?utf8=%E2%9C%93&q=filter
HanLP: Han Language Processing - Natural Language Processing for the next decade