#python #nlp #nltk #wordnet
#python #nlp #nltk #wordnet
Вопрос:
Я хочу проверить написание предложения на python с помощью NLTK
. Встроенная spell checker
функция работает некорректно. Оно выдает with
и ‘and’ как неправильное написание.
def tokens(sent):
return nltk.word_tokenize(sent)
def SpellChecker(line):
for i in tokens(line):
strip = i.rstrip()
if not WN.synsets(strip):
print("Wrong spellings : " i)
else:
print("No mistakes :" i)
def removePunct(str):
return "".join(c for c in str if c not in ('!','.',':',','))
l = "Attempting artiness With black amp; white and clever camera angles, the movie disappointed - became even more ridiculous - as the acting was poor and the plot and lines almost non-existent. "
noPunct = removePunct(l.lower())
if(SpellChecker(noPunct)):
print(l)
print(noPunct)
Кто-нибудь может назвать мне причину?
Ответ №1:
Оно выдает неправильные варианты написания, потому что они stopwords
отсутствуют в wordnet (проверьте часто задаваемые вопросы)
Таким образом, вы можете вместо этого использовать стоп-слова из NLTK corpus для проверки наличия таких слов.
#Add these lines:
import nltk
from nltk.corpus import wordnet as WN
from nltk.corpus import stopwords
stop_words_en = set(stopwords.words('english'))
def tokens(sent):
return nltk.word_tokenize(sent)
def SpellChecker(line):
for i in tokens(line):
strip = i.rstrip()
if not WN.synsets(strip):
if strip in stop_words_en: # <--- Check whether it's in stopword list
print("No mistakes :" i)
else:
print("Wrong spellings : " i)
else:
print("No mistakes :" i)
def removePunct(str):
return "".join(c for c in str if c not in ('!','.',':',','))
l = "Attempting artiness With black amp; white and clever camera angles, the movie disappointed - became even more ridiculous - as the acting was poor and the plot and lines almost non-existent. "
noPunct = removePunct(l.lower())
if(SpellChecker(noPunct)):
print(l)
print(noPunct)
Комментарии:
1. Я вижу, что такие слова, как «could», «upon», «which», все еще считаются неправильно написанными