首页 > 解决方案 > 从单词列表的列表中查找唯一的例句

问题描述

我有一个 3000 个(大部分是唯一的)单词的列表,按它们在英语中的频率排序。我还有一个包含 3000 个独特句子的列表。理想情况下,我想使用 Python 为每个单词生成一个例句列表。因此,每个单词都会有一个句子,其中包含该单词,并与之配对。但是任何句子都不应与一个以上的单词配对,并且任何单词都不应与一个以上的句子相关联。

但这里有一个问题,这是一个混乱的数据集,很多词会出现在一个以上的句子中,有些词只会出现在一个句子中,而很多词不会出现在任何句子中。所以我不会得到我理想的结果。相反,我想要的是一个与单词匹配的句子数量最多的最佳列表。然后是被省略的句子列表。此外,理想情况下,排序列表应该更喜欢为低频词而不是高频词找到句子。(因为返回并找到更高频率词的替换句子会更容易。)

这是一个简短的示例,以帮助澄清:

words = ["the", "cat", "dog", "fish", "runs"]
sentences = ["the dog and cat are friends", "the dog runs all the time", "the dog eats fish", "I love to eat fish", "Granola is yummy too"]
output = ["", "the dog and cat are friends", "the dog eats fish", "I love to eat fish", "the dog runs all the time"]
omitted = ["Granola is yummy too"]

如你看到的:

我什至不确定从哪里开始为此编写代码。(我是一名语言学家,他涉足编码,而不是专业的编码员。)所以任何帮助将不胜感激!

标签: pythonstringlistsortingsubstring

解决方案


...从哪里开始...

这是一种天真的方法,没有任何优化的尝试。

  • 用单词作为键和值的列表制作字典
    • {'word1':[], 'word2':[], ...}  
      
  • 对于字典中的每个项目
    • 如果单词在句子中,则遍历句子并将句子附加到项目的列表中

或者可能:

  • 做一组单词
  • 制作一个空字典
  • 对于每个句子
    • 找到句子中的单词与单词集的交集
    • 使用句子作为键,将交集作为值,将项目添加到字典中

推荐阅读