Hướng dẫn find most common phrases in text python - tìm các cụm từ phổ biến nhất trong văn bản python

Tôi có một loạt các mục văn bản- HTML thô từ cơ sở dữ liệu MySQL. Tôi muốn tìm các cụm từ phổ biến nhất trong các mục này [không phải là cụm từ phổ biến nhất và lý tưởng nhất, không thực thi kết hợp từ chữ cái].

Ví dụ của tôi là bất kỳ đánh giá nào trên Yelp.com, hiển thị 3 đoạn trích từ hàng trăm đánh giá về một nhà hàng nhất định, ở định dạng:

"Hãy thử Hamburger" [trong 44 đánh giá]

ví dụ: phần "Đánh giá nổi bật" của trang này:

//www.yelp.com/biz/sushi-gen-los-angeles/

Tôi đã cài đặt NLTK và tôi đã chơi xung quanh nó một chút, nhưng thật sự bị choáng ngợp bởi các tùy chọn. Đây có vẻ như là một vấn đề khá phổ biến và tôi không thể tìm thấy một giải pháp đơn giản bằng cách tìm kiếm ở đây.

Đã hỏi ngày 16 tháng 3 năm 2010 lúc 8:42Mar 16, 2010 at 8:42

2

Tôi nghi ngờ bạn không chỉ muốn các cụm từ phổ biến nhất, mà là bạn muốn các cuộc hợp tác thú vị nhất. Nếu không, bạn có thể kết thúc với một sự thể hiện quá mức các cụm từ được tạo thành từ những từ phổ biến và ít cụm từ thú vị và nhiều thông tin hơn.collocations. Otherwise, you could end up with an overrepresentation of phrases made up of common words and fewer interesting and informative phrases.

Để làm điều này, về cơ bản bạn sẽ muốn trích xuất N-gram từ dữ liệu của mình và sau đó tìm những dữ liệu có thông tin tương hỗ điểm cao nhất [PMI] điểm cao nhất. Đó là, bạn muốn tìm thấy những từ kết hợp với nhau nhiều hơn bạn mong đợi một cách tình cờ.

Các kết hợp NLTK How-to-to bao gồm cách thực hiện điều này trong khoảng 7 dòng mã, ví dụ:

import nltk
from nltk.collocations import *
bigram_measures = nltk.collocations.BigramAssocMeasures[]
trigram_measures = nltk.collocations.TrigramAssocMeasures[]

# change this to read in your data
finder = BigramCollocationFinder.from_words[
    nltk.corpus.genesis.words['english-web.txt']]

# only bigrams that appear 3+ times
finder.apply_freq_filter[3]

# return the 10 n-grams with the highest PMI
finder.nbest[bigram_measures.pmi, 10]

Soroush

9952 Huy hiệu vàng18 Huy hiệu bạc25 Huy hiệu đồng2 gold badges18 silver badges25 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2010 lúc 9:35Mar 16, 2010 at 9:35

Dmcerdmcerdmcer

8.0961 Huy hiệu vàng34 Huy hiệu bạc41 Huy hiệu đồng1 gold badge34 silver badges41 bronze badges

3

Tôi nghĩ những gì bạn đang tìm kiếm là chunking. Tôi đề nghị đọc Chương 7 của cuốn sách NLTK hoặc có thể là bài viết của riêng tôi về trích xuất chunk. Cả hai người này đều có kiến ​​thức về gắn thẻ một phần giọng nói, được đề cập trong Chương 5.

Đã trả lời ngày 15 tháng 4 năm 2010 lúc 2:37Apr 15, 2010 at 2:37

JacobjacobJacob

4.1741 Huy hiệu vàng24 Huy hiệu bạc25 Huy hiệu đồng1 gold badge24 silver badges25 bronze badges

2

Nếu bạn chỉ muốn lớn hơn 3 ngram, bạn có thể thử điều này. Tôi cho rằng bạn đã tước bỏ tất cả rác như HTML, v.v.

import nltk
ngramlist=[]
raw=

x=1
ngramlimit=6
tokens=nltk.word_tokenize[raw]

while x 

Bài Viết Liên Quan

Chủ Đề