pyenchant:检查给定单词是否是名词(但不是专有名词)并拼写正确

时间:2017-05-24 08:19:03

标签: pyenchant

python pyenchant库(以及c enchant)允许检查单词是否拼写正确 http://pythonhosted.org/pyenchant/api/enchant.html

import enchant
enchant.Dict("en_US").check("house")

美国词典来自哪里? 它是否也包含专有名词,例如Microsoft或John? 是否可以检查给定的单词是否是名词(但不是专有名词)并拼写正确? 所以,比如:

check("house") -> true
check("houses") -> true
check("Microsoft") -> false
check("keiujr") -> false

2 个答案:

答案 0 :(得分:0)

us_EN词典包含您在词典中找到的单词-因此没有专有名词。这意味着您在拼写检查时,除了在句子开头不希望对大写单词进行拼写检查。这不是理想的方法,但是在许多情况下都可以使用。也可以在提供的词典中添加专有名词词典。

答案 1 :(得分:0)

您可以将nltk和pyspellchecker用于此任务。 使用nltk的词性(POS)标记可用于找出词的种类。

您可以在此处详细了解标签-https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html

Pyspellchecker的未知功能可用于确定给定单词的拼写是否正确。

import nltk 
!pip install pyspellchecker
from spellchecker import SpellChecker
spell = SpellChecker()


def check(list_words):
tagged = nltk.pos_tag(list_words) 
for i in range(0,len(tagged)):
    if(tagged[i][1] not in ['NN','NNS']):
        print("False:",tagged[i][0])
    else:
        if(spell.unknown([tagged[i][0]])):
            print("False:",tagged[i][0])
        else:
            print("True:",tagged[i][0])

list_words =['house','houses','Microsoft','keiujr']
check(list_words)

上面代码的输出将是。

真实:房子

真实:房屋

错误:Microsoft

错误:keiujr