gpt4 book ai didi

python - 如何动态识别列表中重复出现的模式,然后将其删除?

转载 作者:行者123 更新时间:2023-12-01 00:58:56 26 4
gpt4 key购买 nike

我需要在列表中的字符串中查找重复出现的模式,然后从字符串中删除这些模式。

重点是删除文档标题中的网站名称,以便 Amet urnatincidunt efficitur - The Guardian 变为 Amet urnatincidunt efficitur

使用正则表达式来做到这一点很简单。但问题是,具体的模式事先并不知道,只是不断重复出现。

示例数据:

data = ["Amet urna tincidunt efficitur - The Guardian",
"Yltricies hendrerit eu a nisi - The Guardian",
"Faucibus pharetra id quis arck - The Guardian",
"Net tristique facilisis | New York Times",
"Quis finibus lacinia | New York Times",
"My blog: Net tristique facilisis",
"My blog: Quis finibus lacinia"]

我们可以很容易地看到子字符串 - The Guardian, | 《纽约时报》我的博客: 不断重复出现。如何动态识别这些重复出现的模式,然后将其删除?

预期输出:

data = ["Amet urna tincidunt efficitur",
"Yltricies hendrerit eu a nisi",
"Faucibus pharetra id quis arck",
"Net tristique facilisis",
"Quis finibus lacinia",
"Net tristique facilisis",
"Quis finibus lacinia"]

最佳答案

基本上,您是否想要过滤出一组正确文档中最常出现的单词的工具?您可以简单地使用 sklearn 中的 CountVectorizer与您想要的切割参数。这是使用 ma​​x_df 参数完成的。根据文档( CountVectorizer Documentation )描述 max_df 确定以下内容:

构建词汇表时,忽略文档频率严格高于给定阈值的术语(特定于语料库的停用词)

这样,您就可以忽略特定频率的单词。因此,只需执行相反的过程即可消除超出您想要的限制的单词。

示例:

from nltk import word_tokenize
from sklearn.feature_extraction.text import CountVectorizer

data = ["Amet urna tincidunt efficitur - The Guardian",
"Yltricies hendrerit eu a nisi - The Guardian",
"Faucibus pharetra id quis arck - The Guardian",
"Net tristique facilisis | New York Times",
"Quis finibus lacinia | New York Times"]

vectorizer = CountVectorizer(max_df=0.3, lowercase=False, strip_accents=None)
X = vectorizer.fit_transform(data)

vocab = vectorizer.vocabulary_
cv_matrix = X.todense()
new_data = []

for idx_t, text in enumerate(data):
tokens = word_tokenize(text)
cv_matrix_ = cv_matrix[idx_t].tolist()[0]
new_text = []

for tok_ in tokens:
if tok_ in vocab.keys():
new_text.append(tok_)

new_data.append(" ".join(new_text))

结果:

>>> new_data
['Amet urna tincidunt efficitur',
'Yltricies hendrerit eu nisi',
'Faucibus pharetra id quis arck',
'Net tristique facilisis',
'Quis finibus lacinia']

关于python - 如何动态识别列表中重复出现的模式,然后将其删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55975843/

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