blmoistawinde / HarvestText

文本挖掘和预处理工具(文本清洗、新词发现、情感分析、实体识别链接、关键词抽取、知识抽取、句法分析等),无监督或弱监督方法
MIT License
2.43k stars 330 forks source link

支持英文吗 #10

Closed 18645956947 closed 5 years ago

18645956947 commented 5 years ago

RT

blmoistawinde commented 5 years ago

你好,因为本库一开始就是只针对中文设计的,特别是中文的分词/词性与英语不同,所以不能够保证对于英语的完全支持

英语的分析有很多很好的工具,比如nltk和Spacy,可以去看看那些。

不过部分功能或许能够使用,这里我只给几个例子:

from harvesttext import HarvestText
ht = HarvestText()
  1. 分词
    sentence = "HarvestText is an awesome Python library!"
    print(ht.seg(sentence))
    ['HarvestText', ' ', 'is', ' ', 'an', ' ', 'awesome', ' ', 'Python', ' ', 'library', '!']

    目前使用的分词策略会包含空格,后续或许可以考虑加一个过滤机制。

  2. 实体链接
    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

  3. 基于规则的实体发现
    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')]
18645956947 commented 5 years ago

谢谢你这么耐心详细的解答,我找到了Dbpedia的API可以实现简单的关键词查询