python - 根据另一列的值过滤一行中的值
问题描述
我想为我的训练数据中的三个不同标签创建一个特定否定词的列表。这个词应该只出现在一个特定的标签上,而不是三个。我有一个包含 3 列的数据框:id、句子、标签
我还有 2 个不同的正面词典文件(均采用词形还原形式)
我想为每个标签创建单词列表
到目前为止,我成功地创建了为每个句子显示否定词的列。但我无能为力之后如何选择和提取每个标签唯一的单词。这意味着仅出现在标记为三个类别之一的句子中的单词。
总结一下:我想创建一个我的单词词典中的单词列表,这些单词出现在标记为 A、B 或 C 的句子中。这些单词对于每个类应该是唯一的,如预期输出列表中所示
下面的数据文件
脚本的一部分我的脚本(我只是用否定词放了例子)
lexiconneg = lexiconneg_feel['Word'].values # a list of negative word
print(lexiconneg)
def extract_word_neg(text, word_list):
text_list = tokenize_lemmatize_spacy(text) # call tokenize and lemmatisation function using spacy
intersection = [w for w in text_list if w in word_list]
return intersection
datafile['list_mots_négatifs'] = datafile['phrases'].apply(extract_word_neg, args= (lexiconneg, ))
datafile.to_excel('négatif_mots.xlsx')
应用以下脚本后的数据文件
因此,对于我的示例,我将获得以下列表作为预期结果:
A= problème, polluer, corrosif, pouvoir, sujet
B= contrer, extrémité, bouillir
C= vider pression
解决方案
由于我没有您提供的代码,因此我尝试在此处制作一些随机的 pandas 数据框,以便使用建议的内容
dataframe = pd.DataFrame(np.transpose([['problème blabla', 'contrer blabla', 'vider blabla', 'polluer blabla',
'corrosif blabla', 'pression blabla', 'extrémité blabla', 'invalid word', 'boullir blabla',
'sujet blabla', 'problème blabla', 'invalid word', 'vider blabla', 'corrosif blabla',
'boullir blabla', 'contrer blabla', 'invalid word', 'invalid word'],
['A', 'B', 'C', 'A', 'A', 'C', 'B', 'B', 'A', 'A', 'C', 'A', 'B', 'B']]),
columns = ['phrases', 'labels'])
A = ['problème', 'polluer', 'corrosif', 'pouvoir', 'sujet']
B = ['contrer', 'extrémité', 'bouillir']
C = ['vider', 'pression']
从该框架中提取“标记”单词的方法如下:
A_Words = [x for x in sum([y.split() for y in dataframe.phrases[dataframe.labels=='A']], []) if x in A]
B_Words = [x for x in sum([y.split() for y in dataframe.phrases[dataframe.labels=='B']], []) if x in B]
C_Words = [x for x in sum([y.split() for y in dataframe.phrases[dataframe.labels=='C']], []) if x in C]
因此,只需解释这里发生的事情,看看它是否有意义:[y.split() for y in dataframe.phrases[dataframe.labels=='A']]
我们正在创建一个列表,其中包含来自 pandas 数据帧中具有标签的每个元素的拆分词A
。
为了展平单词列表以便我们只能提取 A、B 或 C 中包含的单词,我们使用此处提出的解决方案
然后我们检查该单词是否位于 A、B 或 C 列表中,如果是,则将它们添加到 A_Words 中,等等。
我希望我能提供帮助,如果它不完全是这个 por
推荐阅读
- architecture - 在不接触数据库的情况下将单体迁移到微服务
- c# - SignalR 服务器在哪里/如何调用集线器
- javascript - 用户写入值超出范围后如何立即调用警报
- java - 故意制作stackoverflow
- php - 如何让 PHP 在本地连接到 MySQL?
- javascript - URL从字符串中隐藏#anchor-text
- python - 参数#1“输入”的预期张量具有相同的维度
- virtualbox - 如何在 nixos 来宾系统中缩小 VirtualBox 虚拟机并释放磁盘空间?
- swift - Swift 4.2:[Swift._EmptyArrayStorage _getValue:forType:]:无法识别的选择器
- bash - 如何使用 ssh 直接连接到远程 docker 容器