- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在尝试对 Kaggle 上的 Sentiment140 数据库进行一些预处理:https://www.kaggle.com/kazanova/sentiment140
我使用的代码是这样的:
import os
from nltk.stem.lancaster import LancasterStemmer
from nltk.tokenize import RegexpTokenizer
Base_location = ''
dataset_location = os.path.join(Base_location, 'Sentiment140.csv')
corpus = []
labels = []
# Parse tweets and sentiments
with open(dataset_location, 'r', encoding='latin-1') as df:
for i, line in enumerate(df):
parts = line.strip().split(',')
# Sentiment (0 = Negative, 1 = Positive)
labels.append(str(parts[0].strip()))
# Tweet
tweet = parts[5].strip()
if tweet.startswith('"'):
tweet = tweet[1:]
if tweet.endswith('"'):
tweet = tweet[::-1]
corpus.append(tweet.strip().lower())
print('Corpus size: {}'.format(len(corpus)))
# Tokenize and stem
tkr = RegexpTokenizer('[a-zA-Z0-9@]+')
stemmer = LancasterStemmer()
tokenized_corpus = []
for i, tweet in enumerate(corpus):
tokens = [stemmer.stem(t) for t in tkr.tokenize(tweet) if not t.startswith('@')]
tokenized_corpus.append(tokens)
print(tokenized_corpus)
但是,我不断收到此错误:
TypeError: '_io.TextIOWrapper' object is not subscriptable
谁能帮助我了解如何解决这个问题?
提前致谢
最佳答案
要读取 .csv
或结构化数据集,请使用 pandas
https://pandas.pydata.org/或任何其他数据框库。
而不是做:
Base_location = ''
dataset_location = os.path.join(Base_location, 'Sentiment140.csv')
corpus = []
labels = []
# Parse tweets and sentiments
with open(dataset_location, 'r', encoding='latin-1') as df:
for i, line in enumerate(df):
parts = line.strip().split(',')
# Sentiment (0 = Negative, 1 = Positive)
labels.append(str(parts[0].strip()))
# Tweet
tweet = parts[5].strip()
if tweet.startswith('"'):
tweet = tweet[1:]
if tweet.endswith('"'):
tweet = tweet[::-1]
corpus.append(tweet.strip().lower())
您可以简单地用 pandas 读取 .csv
文件,例如
import pandas as pd
corpus = pd.read_csv('training.1600000.processed.noemoticon.csv', encoding='latin-1')
然后使用.apply()
函数处理推文:
"""
Columns
====
target: the polarity of the tweet (0 = negative, 2 = neutral, 4 = positive)
ids: The id of the tweet ( 2087)
date: the date of the tweet (Sat May 16 23:58:44 UTC 2009)
flag: The query (lyx). If there is no query, then this value is NO_QUERY.
user: the user that tweeted (robotickilldozr)
text: the text of the tweet (Lyx is cool)
"""
from nltk.stem.lancaster import LancasterStemmer
from nltk.tokenize import RegexpTokenizer
import pandas as pd
df = pd.read_csv('training.1600000.processed.noemoticon.csv',
header=None,
names=['target', 'ids', 'date', 'flag', 'user', 'text'],
encoding='latin-1')
tokenizer = RegexpTokenizer('[a-zA-Z0-9@]+')
stemmer = LancasterStemmer()
def process_tweet(tweet):
return [stemmer.stem(token) if not token.startswith('@') else token
for token in tokenizer.tokenize(tweet)]
# 1. Cast the column type to string
# 2. Lowercase it
# 3. Iterate throw each row and get the output from process_tweet()
# 4. # 3. Keep in a new column call `tokenized_text`
df['tokenized_text']= df['text'].str.lower().apply(process_tweet)
关于database - Sentiment140 预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52026677/
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
在进行情感分析时,如何让机器理解我指的是苹果(iphone),而不是苹果(水果)? 谢谢你的建议! 最佳答案 嗯,有几种方法, 我会从检查大写字母开始,通常,当提到一个名字时,第一个字母是大写的。 在
我和一群人正在开发一种情绪分析算法。我想知道哪些是现有的,因为我想比较它们。有没有文章有这方面的主要算法? 提前致谢 蒂亚戈 最佳答案 一些关于情感分析的论文可能对你有帮助—— Bo Pang, Li
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在对一篇文章进行情感分析。我不知道如何使用情感分析来检查文章是正面的、负面的还是中立的。 得分18,比较7.7% 最佳答案 在您的文章中被检测为“正面”或“负面”的每个词都有一个分数(高于 0 表
我想在我的项目中使用 SentiWordNet,但我无法弄清楚意义数字有什么作用?这是 SentiWordNet 单词列表的一部分; POS ID PosScore NegScore SynsetTe
有谁知道 textblob 情绪是如何运作的?我知道它基于 Pattern 工作,但我找不到任何文章或文档解释模式如何为句子分配极性值。 最佳答案 下面是 textblog 情感模块的代码: http
我的应用需要情绪分析功能。我发现有很多服务和图书馆可以帮助完成这项任务。但它们中的大多数都有“三维”输出:文本可能被归类为“正面”、“负面”或“中性”。 但如果我需要更多种类的选项怎么办?例如:“自信
是否可以遍历一串词,使用情绪维达将它们分类为正面、负面或中性,然后如果它们是正面的,则将这些正面的词附加到列表中?下面的 for 循环是我想要完成的非工作代码。我是 Python 的初学者,所以如果有
我正在分析社交网络上的情绪。基于不同 相关话题 作为输入。我们如何处理个别主题分数的分散? 例如:我们正在尝试对包含不同关键字的事件的主题进行情绪评分,假设主题是具有以下主题(关键字或同义词)的创新周
我正在探索tensorflow,并希望使用可用的选项进行情感分析。我看了下面的教程http://www.tensorflow.org/tutorials/recurrent/index.html#la
我在 SO 上发现了上一个问题:N-grams: Explanation + 2 applications . OP给出了这个例子并询问它是否正确: Sentence: "I live in NY."
我正在尝试关注this情感分析在线教程。代码: new_sentiments % #From the tidytext package filter(lexicon != "loughran")
我正在尝试实现 Twitter 情绪分析。我需要获取所有正面推文和负面推文并将它们存储在特定的文本文件中。 示例.json {"id": 252479809098223616, "created_at
我正在使用朴素贝叶斯模型将包含 200000 条评论的语料库训练成正面评论和负面评论,我注意到执行 TF-IDF 实际上将准确度降低了大约 2%(在对 50000 条评论的测试集进行测试时) .所以我
我正在使用 Theano 的 DBN(深度信念网络)和 SDA(堆叠降噪自动编码器)示例进行文本分类实验。我已经生成了一个特征/标签数据集,就像生成 Theano 的 MINST 数据集一样,并更改了
我在我的 ubuntu 实例上设置了 CoreNLP 服务器,它工作正常。我对 Sentiment 模块更感兴趣,目前我得到的是 { sentimentValue: "2", sentiment: "
我的文字来源于一个社交网络,所以你可以想象它的本质,我认为文字是我想象中的干净和最小的;执行以下 sanitizer 后: 没有网址,没有用户名 没有标点符号,没有重音符号 没有数字 没有停用词(我想
我一直在使用 Vader Sentiment 进行一些文本情感分析,我注意到我的数据中有很多“有待改进”的短语被错误地归类为中性: In[11]: sentiment('way to go John'
我是 Python 的初学者,正在尝试使用 nltk.sentiment.vader,但尽管多次尝试修复它,但仍收到反复出现的错误消息。我之前安装了大部分 NTLK(3 个模块已过时,因此无法安装)。
我是一名优秀的程序员,十分优秀!