我试图弄清楚如何创建一个列表列表,其中每个子列表包含给定文本中肯定词和否定词的数量。下面是我正在使用的正负文本文件的名称以及这些文本文件中的单词示例。也是“X_train”变量中的示例文本。以及输出应该是什么样子。
positive_words.txt # 快乐,伟大,惊人
negative_words.txt = # 悲伤,糟糕,可怜
X_train = ['食物很棒,服务很棒','我对我的食物很满意','我的食物味道不好','我很穷,买不到食物所以我很伤心,但至少我有鸡肉' ]
X_train_lexicon_features = ?
上述变量的输出应该是什么样子。
print(X_train_lexicon_features)
输出:[[2,0],[1,0],[0,1],[0,2]]
# 从上面给出的示例中,X_train 变量中的第一个文本应该产生 [2,0],因为它在 positive_lexicon 中都有“great”和“amazing”。[正负]
下面是一个统计正面和负面单词数量的类。
class LexiconClassifier():
def __init__(self):
self.positive_words = set()
with open('positive-words.txt', encoding = 'utf-8') as iFile:
for row in iFile:
self.positive_words.add(row.strip())
self.negative_words = set()
with open('negative-words.txt', encoding='iso-8859-1') as iFile:
for row in iFile:
self.negative_words.add(row.strip())
def count_pos_words(self, sentence):
num_pos_words = 0
for word in sentence.lower().split():
if word in self.positive_words:
num_pos_words += 1
return num_pos_words
def count_neg_words(self, sentence):
num_neg_words = 0
for word in sentence.lower().split():
if word in self.negative_words:
num_neg_words += 1
return num_neg_words
这是我运行的代码以返回每个文本的正面单词数。
myLC = LexiconClassifier()
X_train_lexicon_features = []
for i in X_train:
X_train_lexicon_features.append(myLC.count_pos_words(i))
输出:[2,1,0,0]
我不确定的是如何将'count_neg_words'函数混合到上面的代码中,它也会返回一个列表列表,如下所示:[[2,0],[1,0],[0,1],[ 0,2]]。
感谢您的任何建议,并在此先感谢您!