gpt4 book ai didi

python - 使用 Python 插入码字来修改语料库

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:54 27 4
gpt4 key购买 nike

我有一个 csv 文件(或 txt 文件)中的语料库(30,000 条客户评论)。这意味着每个客户评论都是文本文件中的一行。一些例子是:

  • 这辆自行车很棒,但刹车很差
  • 这个制冰机效果很好,价格也很合理,有些不好制冰机的气味
  • 食物很棒,但水很粗鲁

我想将这些文本更改为以下内容:

  • 这辆自行车很棒,正面,但刹车很差,负面
  • 这台制冰机效果很好,而且价格非常合理制冰机有积极的气味,但有一些难闻的消极气味
  • 食物很棒(正面),但水很粗鲁(负面)

我有两个单独的积极词和消极词列表(词典)。例如,一个文本文件包含如下积极的词语:

  • 太棒了
  • 太棒了
  • 太棒了
  • 非常酷
  • 合理
  • 漂亮
  • 好吃
  • 善良

并且,文本文件包含以下负面单词:

  • 粗鲁
  • 最差
  • 不好

所以,我想要读取客户评论的Python脚本:当找到任何积极的词时,然后在积极的词后面插入“积极”;当发现任何负面词时,则在正面词后面插入“NEGATIVE”。

这是我迄今为止测试过的代码。这是可行的(请参阅下面代码中我的评论),但它需要改进才能满足我上面描述的需求。

具体来说,my_escaper可以工作(此代码找到诸如“便宜”和“好”之类的词,并将它们替换为便宜的积极和良好的积极),但问题是我有两个文件(词典),每个文件包含大约一千个积极/消极的单词。所以我想要的是代码从词典中读取这些单词列表,在语料库中搜索它们,并替换语料库中的这些单词(例如,从“好”到“好积极”,从“坏”到“坏”负”)。

#adapted from http://stackoverflow.com/questions/6116978/python-replace-multiple-strings

import re

def multiple_replacer(*key_values):
replace_dict = dict(key_values)
replacement_function = lambda match: replace_dict[match.group(0)]
pattern = re.compile("|".join([re.escape(k) for k, v in key_values]), re.M)
return lambda string: pattern.sub(replacement_function, string)

def multiple_replace(string, *key_values):
return multiple_replacer(*key_values)(string)

#this my_escaper works (this code finds such words as cheap and good and replace them with cheap POSITIVE and good POSITIVE), but the problem is that I have two files (lexicons), each containing about thousand positive/negative words. So what I want is that the codes read those word lists from the lexicons, search them in the corpus, and replace those words in the corpus (for example, from "good" to "good POSITIVE", from "bad" to "bad NEGATIVE")

my_escaper = multiple_replacer(('cheap','cheap POSITIVE'), ('good', 'good POSITIVE'), ('avoid', 'avoid NEGATIVE'))

d = []
with open("review.txt","r") as file:
for line in file:
review = line.strip()
d.append(review)

for line in d:
print my_escaper(line)

最佳答案

一种简单的编码方法是将词典中的正面和负面单词加载到单独的集合中。然后,对于每个评论,将句子拆分为单词列表,并在情绪集中查找每个单词。检查集成员资格是 O(1) in the average case 。将情感标签(如果有)插入单词列表中,然后连接以构建最终字符串。

示例:

import re

reviews = [
"This bike is amazing, but the brake is very poor",
"This ice maker works great, the price is very reasonable, some bad smell from the ice maker",
"The food was awesome, but the water was very rude"
]

positive_words = set(['amazing', 'great', 'awesome', 'reasonable'])
negative_words = set(['poor', 'bad', 'rude'])

for sentence in reviews:
tagged = []
for word in re.split('\W+', sentence):
tagged.append(word)
if word.lower() in positive_words:
tagged.append("POSITIVE")
elif word.lower() in negative_words:
tagged.append("NEGATIVE")
print ' '.join(tagged)

虽然这种方法很简单,但有一个缺点:由于使用 re.split(),您会丢失标点符号。

关于python - 使用 Python 插入码字来修改语料库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com