Как лемматизировать файл .txt, а не предложение с pywsd.utils? - PullRequest
1 голос
/ 11 ноября 2019

Я новичок в 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) Как получить содержимое выходного файла без какого-либо форматирования (слова без одинарных кавычек и скобок)?

Любая помощь приветствуется. Заранее спасибо.

1 Ответ

0 голосов
/ 11 ноября 2019

Просто примените лемматизатор к каждой строке, одну за другой, а затем добавьте это к строке с новой строкой. По сути, он делает то же самое. Кроме выполнения каждой строки, добавления ее к временной строке и разделения каждой новой строкой, в конце мы выводим временную строку. Вы можете использовать временную строку в конце как конечный результат.

my_temp_string = ""
with open ('a.txt',"r+", encoding="utf-8") as fin:
    for line in fin:
        lemm = lemmatize_sentence(line)
        my_temp_string += f'{lemm} \n'
print (my_temp_string)
...