Tôi đang tìm một cách hiệu quả để xây dựng Ma trận Tài liệu Thuật ngữ bằng Python có thể được sử dụng cùng với dữ liệu bổ sung.Xử lý văn bản Python: NLTK và gấu trúc
Tôi có một số dữ liệu văn bản với một vài thuộc tính khác. Tôi muốn chạy một số phân tích về văn bản và tôi muốn có khả năng tương quan các tính năng được trích xuất từ văn bản (chẳng hạn như mã thông báo riêng lẻ hoặc chủ đề LDA) với các thuộc tính khác.
Gói của tôi đã tải dữ liệu dưới dạng khung dữ liệu gấu trúc và sau đó mỗi câu trả lời sẽ đại diện cho một tài liệu. Rất tiếc, tôi gặp phải sự cố:
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
Lưu ý rằng trong cả hai trường hợp, văn bản được xử lý theo cách chỉ có bất kỳ thứ gì nhưng không gian, chữ cái và,.?! đã bị xóa (để đơn giản).
Như bạn có thể thấy trường gấu trúc được chuyển đổi thành chuỗi trả về ít kết quả phù hợp hơn và độ dài của chuỗi cũng ngắn hơn.
Có cách nào để cải thiện mã trên không?
Ngoài ra, str(x)
tạo 1 chuỗi lớn trong số các nhận xét trong khi [str(x) for x in txt_data.comment]
tạo đối tượng danh sách không thể chia thành một nhóm từ. Cách tốt nhất để tạo ra một đối tượng nltk.Text
sẽ giữ lại các chỉ mục tài liệu là gì? Nói cách khác, tôi đang tìm cách tạo một Ma trận Tài liệu Thuật ngữ, R tương đương với TermDocumentMatrix()
từ gói tm
.
Rất cám ơn.
không chắc chắn câu hỏi của bạn là gì, nhưng có các thư viện khác cho NLP có thể giúp bạn, thư viện như mẫu, textblob, C & C, nếu bạn đã đến đích, bạn cũng có thể thử các thư viện đó, mỗi thư viện có lợi thế riêng hơn những người khác. – mid
Cảm ơn @mid, tôi biết về gensim, nhưng tôi chưa bao giờ nghe nói về textblob trước đây, nó thực sự trông hữu ích mặc dù! Tôi khá mới với Python (tôi thường làm việc trong R) và tôi thực sự nghi ngờ rằng tôi đã đạt đến một kết thúc chết với NLTK, xem xét các gói phổ biến như thế nào, tôi chắc chắn rằng tôi chỉ thiếu một cái gì đó. – IVR