python - 从单词列表的列表中查找唯一的例句
问题描述
我有一个 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"]
如你看到的:
- “格兰诺拉麦片也很好吃”被省略了,因为它不包含任何单词。
- “the dog and cat are friends”与“cat”匹配,因为它是唯一包含“cat”的句子
- “the dog runs all the time”与“runs”匹配,因为它是唯一包含“runs”的句子
- “the dog eats fish”与“dog”匹配,因为“dog”在英语中的出现频率低于“the”
- “我爱吃鱼”与“鱼”相匹配,因为已经使用了“鱼”的唯一其他句子
- "the" 没有任何与之匹配的句子
我什至不确定从哪里开始为此编写代码。(我是一名语言学家,他涉足编码,而不是专业的编码员。)所以任何帮助将不胜感激!
解决方案
...从哪里开始...
这是一种天真的方法,没有任何优化的尝试。
- 用单词作为键和值的列表制作字典
-
{'word1':[], 'word2':[], ...}
-
- 对于字典中的每个项目
- 如果单词在句子中,则遍历句子并将句子附加到项目的列表中
或者可能:
- 做一组单词
- 制作一个空字典
- 对于每个句子
- 找到句子中的单词与单词集的交集
- 使用句子作为键,将交集作为值,将项目添加到字典中
推荐阅读
- python - Django PK 到 slugfield
- neo4j - Neo4j - 基于节点属性的聚合计算和设置节点属性
- python-3.x - Jupyter Notebook 连接远程 Oracle 数据库的系统配置
- swift - 接收 ITMS-9089:“冗余二进制上传。您已经上传了版本号为 2.0 的版本 1.0。”
- c++ - 在 Turbo C++ 鼠标程序中无法绘制像素
- github - 使用连接到 github 的 Azure DevOps,如何设置在主分支发生更改时发生的自动构建?
- php - 在上传期间调整图像的宽度和高度
- jquery - 使用滚动输入类型编号增量
- javascript - 在给定两个点和第三个点的所需角度(可能还有距离)的情况下绘制第三个点
- spring - Mockito 验证返回错误“参数匹配器的使用无效!预期 1 个匹配器,已记录 3 个”