Как читать и маркировать построчно текстовый файл, используя nltk.corpus в Python
Моя задача - классифицировать документы по двум данным обучения good_reviews.txt
а также bad_reviews.txt
, Поэтому для начала мне нужно загрузить и пометить свои данные обучения, где каждая строка представляет собой сам документ, который соответствует рецензии. Поэтому моя основная задача - классифицировать обзоры (строки) по заданным данным тестирования.
Я нашел способ загрузки и маркировки данных имен следующим образом:
from nltk.corpus import names
names = ([(name, 'male') for name in names.words('male.txt')] +
[(name, 'female') for name in names.words('female.txt')])
Так что я хочу иметь похожую вещь, которая маркирует lines
и не words
, Я ожидаю, что код будет что-то вроде этого, что, конечно, не работает, так как .lines
неверный синтаксис:
reviews = ([(review, 'good_review') for review in reviews.lines('good_reviews.txt')] +
[(review, 'bad_review') for review in reviews.lines('bad_reviews.txt')])
и я хотел бы получить такой результат:
>>> reviews[0]
('This shampoo is very good blablabla...', 'good_review')
1 ответ
Если вы читаете свой собственный текстовый файл, то тут уж ничего общего NLTK
Вы можете просто использовать file.readlines()
:
good_reviews = """This is great!
Wow, it amazes me...
An hour of show, a lifetime of enlightment
"""
bad_reviews = """Comme si, Comme sa.
I just wasted my foo bar on this.
An hour of s**t, ****.
"""
with open('/tmp/good_reviews.txt', 'w') as fout:
fout.write(good_reviews)
with open('/tmp/bad_reviews.txt', 'w') as fout:
fout.write(bad_reviews)
reviews = []
with open('/tmp/good_reviews.txt', 'r') as fingood, open('/tmp/bad_reviews.txt', 'r') as finbad:
reviews = ([(review, 'good_review') for review in fingood.readlines()] + [(review, 'bad_review') for review in finbad.readlines()])
print reviews
[из]:
[('This is great!\n', 'good_review'), ('Wow, it amazes me...\n', 'good_review'), ('An hour of show, a lifetime of enlightment\n', 'good_review'), ('Comme si, Comme sa.\n', 'bad_review'), ('I just wasted my foo bar on this.\n', 'bad_review'), ('An hour of s**t, ****.\n', 'bad_review')]
Если вы собираетесь использовать корпус обзора фильмов NLTK, см. Классификация с использованием корпуса обзора фильмов в NLTK/Python