Closed 18645956947 closed 5 years ago
你好,因为本库一开始就是只针对中文设计的,特别是中文的分词/词性与英语不同,所以不能够保证对于英语的完全支持。
英语的分析有很多很好的工具,比如nltk和Spacy,可以去看看那些。
不过部分功能或许能够使用,这里我只给几个例子:
from harvesttext import HarvestText
ht = HarvestText()
sentence = "HarvestText is an awesome Python library!"
print(ht.seg(sentence))
['HarvestText', ' ', 'is', ' ', 'an', ' ', 'awesome', ' ', 'Python', ' ', 'library', '!']
目前使用的分词策略会包含空格,后续或许可以考虑加一个过滤机制。
sentence = "Harvest Text has only partial support for English"
ht.add_typed_words({"目标实体":["Harvest Text", "English"]})
print(ht.posseg(sentence))
[('Harvest Text', '目标实体'), (' ', 'x'), ('has', 'eng'), (' ', 'x'), ('only', 'eng'), (' ', 'x'), ('partial', 'eng'), (' ', 'x'), ('support', 'eng'), (' ', 'x'), ('for', 'eng'), (' ', 'x'), ('English', '目标实体')]
这里还是可以发现自定义的实体(["Harvest Text", "English"]),英语的词性统一为eng,空格则为x
from harvesttext.match_patterns import UpperFirst, AllEnglish, Contains, StartsWith, EndsWith
sentence = "HarvestText is an awesome Python library!"
# 首字母大写的英语词语很可能是专名,使用此规则发现
found_entities = ht.find_entity_with_rule(sentence, rulesets=[UpperFirst()], type0="英文专名")
print(found_entities)
print(ht.posseg(sentence))
{'HarvestText', 'Python'}
[('HarvestText', '英文专名'), (' ', 'x'), ('is', 'eng'), (' ', 'x'), ('an', 'eng'), (' ', 'x'), ('awesome', 'eng'), (' ', 'x'), ('Python', '英文专名'), (' ', 'x'), ('library', 'eng'), ('!', 'x')]
谢谢你这么耐心详细的解答,我找到了Dbpedia的API可以实现简单的关键词查询
RT