2017-05-25 89 views
5

Đây là Bộ luật mà tôi đang sử dụng để phân tích ngữ nghĩa của twitter: -Cách NLTK word_tokenize vào một khung dữ liệu Pandas cho dữ liệu Twitter?

import pandas as pd 
import datetime 
import numpy as np 
import re 
from nltk.tokenize import word_tokenize 
from nltk.corpus import stopwords 
from nltk.stem.wordnet import WordNetLemmatizer 
from nltk.stem.porter import PorterStemmer 

df=pd.read_csv('twitDB.csv',header=None, 
sep=',',error_bad_lines=False,encoding='utf-8') 

hula=df[[0,1,2,3]] 
hula=hula.fillna(0) 
hula['tweet'] = hula[0].astype(str) 
+hula[1].astype(str)+hula[2].astype(str)+hula[3].astype(str) 
hula["tweet"]=hula.tweet.str.lower() 

ho=hula["tweet"] 
ho = ho.replace('\s+', ' ', regex=True) 
ho=ho.replace('\.+', '.', regex=True) 
special_char_list = [':', ';', '?', '}', ')', '{', '('] 
for special_char in special_char_list: 
ho=ho.replace(special_char, '') 
print(ho) 

ho = ho.replace('((www\.[\s]+)|(https?://[^\s]+))','URL',regex=True) 
ho =ho.replace(r'#([^\s]+)', r'\1', regex=True) 
ho =ho.replace('\'"',regex=True) 

lem = WordNetLemmatizer() 
stem = PorterStemmer() 
fg=stem.stem(a) 

eng_stopwords = stopwords.words('english') 
ho = ho.to_frame(name=None) 
a=ho.to_string(buf=None, columns=None, col_space=None, header=True, 
index=True, na_rep='NaN', formatters=None, float_format=None, 
sparsify=False, index_names=True, justify=None, line_width=None, 
max_rows=None, max_cols=None, show_dimensions=False) 
wordList = word_tokenize(fg)          
wordList = [word for word in wordList if word not in eng_stopwords] 
print (wordList) 

Input tức là một: -

           tweet 
0  1495596971.6034188::automotive auto ebc greens... 
1  1495596972.330948::new free stock photo of cit... 

nhận được đầu ra (wordlist) ở định dạng này: -

tweet 
0 
1495596971.6034188 
: 
:automotive 
auto 

Tôi chỉ muốn xuất kết quả của một hàng theo định dạng hàng. Tôi làm nó như thế nào? Nếu bạn có mã tốt hơn để phân tích ngữ nghĩa của twitter, vui lòng chia sẻ nó với tôi.

Trả lời

5

Nói tóm lại:

df['Text'].apply(word_tokenize) 

Hoặc nếu bạn muốn thêm cột khác để lưu trữ các danh sách tokenized của chuỗi:

df['tokenized_text'] = df['Text'].apply(word_tokenize) 

Có tokenizers được viết riêng cho văn bản twitter, xem http://www.nltk.org/api/nltk.tokenize.html#module-nltk.tokenize.casual

Để sử dụng nltk.tokenize.TweetTokenizer:

from nltk.tokenize import TweetTokenizer 
tt = TweetTokenizer() 
df['Text'].apply(tt.tokenize) 

Tương tự như:

+0

Nhờ sự giúp đỡ của bạn. Nó đang làm việc bây giờ. :) – Vic13

+0

Tôi rất vui vì câu trả lời đã giúp. – alvas

+0

[link] (https://stackoverflow.com/questions/44157005/how-can-i-enlarge-the-below-output-in-python-because-want-to-use-it-as-an-input) bạn có biết câu trả lời cho câu hỏi này không. – Vic13

Các vấn đề liên quan