Обработка текста на Python: NLTK и панды

Я ищу эффективный способ построения матрицы документов термина в Python, который можно использовать вместе с дополнительными данными.

У меня есть некоторые текстовые данные с несколькими другими атрибутами. Я хотел бы провести некоторый анализ текста, и я бы хотел иметь возможность соотносить функции, извлеченные из текста (например, отдельные токены слов или темы LDA), с другими атрибутами.

Мой план состоял в том, чтобы загрузить данные в виде фрейма данных pandas, и тогда каждый ответ будет представлять документ. К сожалению, я столкнулся с проблемой:

import pandas as pd
import nltk

pd.options.display.max_colwidth = 10000

txt_data = pd.read_csv("data_file.csv",sep="|")
txt = str(txt_data.comment)
len(txt)
Out[7]: 71581 

txt = nltk.word_tokenize(txt)
txt = nltk.Text(txt)
txt.count("the")
Out[10]: 45

txt_lines = []
f = open("txt_lines_only.txt")
for line in f:
    txt_lines.append(line)

txt = str(txt_lines)
len(txt)
Out[14]: 1668813

txt = nltk.word_tokenize(txt)
txt = nltk.Text(txt)
txt.count("the")
Out[17]: 10086

Обратите внимание, что в обоих случаях текст был обработан таким образом, что только все, кроме пробелов, букв и,.?! был удален (для простоты).

Как вы можете видеть, поле панд, преобразованное в строку, возвращает меньше совпадений, а длина строки также короче.

Есть ли способ улучшить вышеуказанный код?

Также,str(x) создает 1 большую строку из комментариев, в то время как[str(x) for x in txt_data.comment] создает объект списка, который не может быть разбит на пакет слов. Каков наилучший способ произвестиnltk.Text объект, который будет сохранять индексы документов? Другими словами, я ищу способ создать матрицу срочных документов, эквивалент R дляTermDocumentMatrix() отtm пакет.

Большое спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос