我有一个带有很多评论的文档。我正在使用TfidfVectorizer创建一个单词袋BW。我想做的是:我只想使用BW中其他文档D中的单词。
文档D是带有肯定词的文档。我正在使用这种积极的方式来改进我的模型。我的意思是:我只想计算肯定的词。
有没有办法做到这一点?
谢谢
我创建了一段代码来完成这项工作,如下: train_x是带有评论的熊猫数据框。
pos_file = open("positive-words.txt")
neg_file = open("negative-words.txt")
#creating arrays based on the files
for ln in pos_file:
pos_words.append(ln.strip())
for ln in neg_file:
neg_words.append(ln.strip())
#adding all the positive and negative words together
sentiment_words.append(pos_words)
sentiment_words.append(neg_words)
pos_file.close()
neg_file.close()
#filtering all the words that are not in the sentiment array
filtered_res =[]
for r in train_x:
keep = []
parts = r.split()
for p in parts:
if p in pos_words:
keep.append(p)
#turning the Review array back to text again
filtered_res.append(" ".join(keep))
train_x = filtered_res
尽管我能够满足自己的需求,但我知道代码并不是最好的。另外,我试图在python中找到一个标准函数来实现这一点
PS:Python具有如此众多的功能,我总是问它在不使用我所使用的大量代码的情况下可以做什么
答案 0 :(得分:0)
这里是一个更优化的版本(因为
import re
pos_words_set = set (pos_words)
def filter (r):
keep = []
# use [A-Za-z] to avoid numbers
for p in re.finditer(r"[A-Za-z0-9]+", string):
if p in pos_words_set:
keep.append(p)
return " ".join(keep)
train_x = train_x.apply(lambda x : filter(x), axis=1)