当前位置: 首页 > 面试题库 >

如何在熊猫数据框上将NLTK word_tokenize库应用于Twitter数据?

督烨赫
2023-03-14
问题内容

这是我用于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)

输入即:-

                                              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语义分析代码,请与我分享。


问题答案:

简而言之:

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)


 类似资料:
  • 问题内容: 在您希望POS标记存储在熊猫数据框中的一列文本(每行只有一句话)的情况下,SO上的大多数实现都使用apply方法 NLTK文档建议使用pos_tag_sents()有效标记多个句子。 这是否适用于此示例,如果是,那么代码是否像更改为那样简单,或者NLTK意味着段落的文本源 正如评论中提到的那样,目的是每次都减少感受器的负载, 但是问题是如何做到这一点,并且仍然在熊猫数据框中生成一列?

  • 问题内容: 我可以从python连接到本地mysql数据库,并且可以创建,选择并插入单个行。 我的问题是:我可以直接指示mysqldb提取整个数据帧并将其插入到现有表中,还是需要遍历行? 在这两种情况下,对于具有ID和两个数据列以及匹配的数据帧的非常简单的表,python脚本的外观如何? 问题答案: 更新: 现在有一种方法,而不是: 另请注意:语法可能会在熊猫0.14中更改… 您可以使用MySQL

  • 问题内容: 当我对数据框中的单个元素进行比较时出现错误,但我不明白为什么。 我有一个数据框df,其中包含许多客户的时间序列数据,其中包含一些空值: 在我的脚本中,该行 生成一个错误: 但是,如果我在脚本行上放置了一个断点,并且在脚本停止时我将其输入到控制台中: 输出为: 如果我允许脚本从这一点继续执行,则会立即生成错误。 如果布尔表达式可以求值并具有值,为什么它在if表达式中生成错误?这对我来说毫

  • 我有一个csv格式的表格,看起来像这样。我想转置该表,以便指示符名称列中的值是新列, 我希望最终结果是这样的: 我尝试过使用熊猫数据框架,但没有多大成功。 你有没有想过如何做到这一点? 谢谢

  • 问题内容: 这可能很容易,但是我有以下数据: 在数据框1中: 在数据框2中: 我想要一个具有以下形式的数据框: 我尝试使用该方法,但是得到了交叉连接(即笛卡尔积)。 什么是正确的方法? 问题答案: 通常看来,您只是在寻找联接:

  • 问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-