Я новичок в Python, который я пытаюсь изучить для базового анализа текста, моделирования тем и т. д.
Я написал следующий код для очистки моего текстового файла. Я предпочитаю функцию pywsed.utils lemmatize.sentence() функции WordNetLemmatizer() NLTK, потому что она производит более чистые тексты. Следующий код отлично работает с предложениями:
from nltk.corpus import stopwords
from pywsd.utils import lemmatize_sentence
import string
s = "Dew drops fall from the leaves. Mary leaves the room. It's completed. Hello. This is trial. We went home. It was easier. We drank tea. These are Demo Texts. Right?"
lemm = lemmatize_sentence(s)
print (lemm)
stopword = stopwords.words('english') + list(string.punctuation)
removingstopwords = [word for word in lemm if word not in stopword]
print (removingstopwords, file=open("cleaned.txt","a"))
Но то, что я не могу сделать, это лемматизировать необработанный текстовый файл в каталоге. Я предполагаю, что lemmatize.sentence() требует только строки?
Мне удается прочитать содержимое файла с помощью
with open ('a.txt',"r+", encoding="utf-8") as fin:
lemm = lemmatize_sentence(fin.read())
print (lemm)
но на этот раз код не может удалить некоторые ключевые слова, такие как «n’t», «ll», «s» или «‘», а также знаки препинания, что приводит к неочищенному тексту.
1) Что я делаю не так? Должен ли я сначала токенизировать? (Мне также не удалось передать результаты lemmatize.sentence()).
2) Как получить содержимое выходного файла без форматирования (слова без одинарных кавычек и скобок)?
Любая помощь приветствуется. Заранее спасибо.