【问题标题】:Removing from a text sequences of items from a list从列表中删除项目的文本序列
【发布时间】:2021-06-28 22:15:51
【问题描述】:

我正在研究语码转换。我有一组带有英语代码转换(比如语料库 A)的双语波兰语短信以及一本英语词典(也是一个列表,语料库 B)。我想从语料库 A 中提取语料库 B 中的所有单词实例——这样我可以看到哪些英语单词出现在双语语料库中。这是我用来创建这些常用词列表的代码(它远非优雅,但我是新手,所以不要对我太苛刻哈哈):


intersection=common.intersection(corpusB)

commonlist=list(intersection)

with open("commonlist.txt","w") as z:

    print(commonlist, file=z)

但是,我注意到我的大部分数据存在偏差,因为其中包含与我的研究无关的词。例如,一些短信包含大量英文文本(例如,复制粘贴的英文文章段落 - 所以不是真正的代码转换,而是引用)。所以我想从语料库 A 中删除所有这些大块英文文本。

我认为我应该做的是找到并删除任何包含五个英文单词的文本消息(这些将是我的大块英文文本)。换句话说,我想扫描语料库 A 中包含来自语料库 B 的四个相邻单词的消息。我该怎么做呢?

(我也有两个语料库的 .csv 文件,也许更有用?)

【问题讨论】:

  • 此代码不是 MCVE minimal reproducible example,您需要对其进行编辑以添加必要的导入和变量定义。什么是common.intersection,是包吗?一个变量是一个集合?它在哪里定义?向我们展示示例输入数据。您可以直接从 URL 中pd.read_csv(),请向我们展示示例 corpusB 和消息 A。

标签: python nlp linguistics


【解决方案1】:

我建议可能加载 csv 文件(即使用 pandas)并将它们转换为集合类型。 Sets 也只包含唯一值。

import pandas as pd

filepath1 = 'file.csv'
filepath2 = 'file2.csv'

df1 = pd.read_csv(filepath1)
df2 = pd.read_csv(filepath2)

set1 = set(df1.values.ravel())
set2 = set(df2.values.ravel())

print(set1.intersection(set2))

输出应该是交集。

【讨论】:

  • 谢谢!但这并不是我的意思。我很擅长找到交叉点,所以这不是问题。我想从一个语料库中删除所有消息(即 CSV 文件中的所有行),这些消息在交集的一行术语中包含多个实例,如果这有意义吗?
  • 所以交集没问题,接下来就是问题了
  • @Joanneboron 所以你想遍历所有语料库元素(每个元素都是一个字符串)并从相交集中删除所有值的实例?
  • 不完全。我想删除连续存在五个或更多相交元素的实例。所以:在语料库 A 中,我有这些信息: 1. Poszłam do sklepu i kupiłam /cheese/ i /avocado/ 2. Nie ma tu nikogo, /I'm outta here/ 3. /Albert Einstein 是德国出生的理论物理学家/ .在英语词典中(又名 A 和 B 的交集) 1. 奶酪 2. 鳄梨 3. 我是 4. outta 5. here 6. Albert 7. Einstein 8. was 9. a 10. 德国出生 11. 理论 12. physicist 所以我想删除消息 #3,因为它包含连续交叉路口的许多项目。
  • @Joanneboron 是否可以共享(部分)csv 文件?我认为帮助它会容易得多。
猜你喜欢
  • 1970-01-01
  • 2022-12-20
  • 2016-05-08
  • 2011-03-18
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
相关资源
最近更新 更多