web-dev-qa-db-ja.com

Pandas TwitterデータのデータフレームにNLTK Word_tokenizeライブラリを適用する方法は?

これは、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)

入力:a:-

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

この形式で出力(wordList)を取得:

Tweet
 0
1495596971.6034188
:
:automotive
auto

行フォーマットでのみ行の出力が必要です。どうすればできますか? Twitterのセマンティック分析に適したコードがある場合は、私と共有してください。

9
Vic13

要するに:

df['Text'].apply(Word_tokenize)

または、トークン化された文字列のリストを格納する別の列を追加する場合は、次のようにします。

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

Twitterのテキスト用に特別に記述されたトークナイザーがあります。詳細は http://www.nltk.org/api/nltk.tokenize.html#module-nltk.tokenize.casual を参照してください

nltk.tokenize.TweetTokenizerを使用するには:

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

に似ている:

15
alvas