我需要在列表中的字符串中找到重复出现的模式,然后从字符串中删除这些模式。你知道吗
关键是去掉文档标题的网站名称,这样Amet urna tincidunt efficitur - The Guardian
就变成了Amet urna tincidunt efficitur
。你知道吗
使用regex做这件事很简单。但问题是,具体的模式事先并不知道,只是它不断重复出现。你知道吗
示例数据:
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
、| New York Times
和My blog:
不断重复出现。如何动态识别这些重复出现的模式,然后删除它们?你知道吗
预期输出:
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和所需的切割参数。这是使用max_df参数完成的。根据文档(CountVectorizer Documentation)描述,max\u df确定以下内容:
在构建词汇表时,忽略文档频率严格高于给定阈值的术语(语料库特定的停止词)。你知道吗
这样,你就可以忽略某些频率的单词。所以,只要做相反的过程,以消除单词,超过了限制,你想要的。你知道吗
例如:
结果:
您可以迭代地查找常见的模式,并创建一个最常见模式的列表来删除它们。听起来你有一个足够大的数据集,它不可能是100%正确的这一点。你知道吗
因为您提到的模式只出现在开头或结尾,所以您可以这样做:
从中,你可以发现“《卫报》”、“《纽约时报》和“我的博客”是常见的网页名称模式。然后,您可以从数据中删除这些内容并再次运行,对其进行迭代,直到您感觉得到了其中的大部分内容。你知道吗
相关问题 更多 >
编程相关推荐