【问题标题】:Extract a specific words from a list of strings using Python使用 Python 从字符串列表中提取特定单词
【发布时间】:2018-01-30 21:00:53
【问题描述】:

我想我是新手 python 程序员。

如果我们在 python 中给出任何列表/数组,我只想提取相关的关键字。

例如:仅提取字符串列表中与食物相关的单词 例如,用户可以输入一个列表。

[0] I want to buy some apple.
[1] Oranges are good for the health.
[2] I bought 2 blueberries yesterday.
[3] John is eating some grapes.
[4] My crush did not like me back.

预期的输出是:

[0] apple
[1] oranges
[2] blueberries
[3] grapes
[4] None

如果有人能指出我如何实现这样的目标,我将不胜感激。我还是编程新手,最近了解了如何提取单词,但如果我有分类食物列表供参考。我可以比较并提取 Yaayyy ! :D 但是假设用户可以输入他/她想要的任何项目,我将如何着手解决这个问题?把全世界所有的食物都复制下来,放在一个清单里供参考,这样可行吗?我一直在寻找解决方案。也许我可能因为某种原因错过了它。如果有人能指出一个链接或主题,如果这是一个重复的话,那就太好了!

顺便说一句,感谢 StackOverFlow 中的所有人对我的帮助很大! :)

【问题讨论】:

  • 您确实需要自己导入“食物”的单词列表。这是不可避免的。
  • 程序不能只知道什么名字用于食物。正如@iBug 所说,某处需要一个参考列表。我不知道您所说的分类列表是什么意思,但只是一个列表,或者一个 dict 就可以了。
  • 但是为了更接近实际的解决方案,如果您不想导入每一种食物的列表,一个长期的解决方案可能是您添加一个选项让用户添加他的/她自己的食物,如果需要的话,只需导入一份常见食物的基本清单。也许只是使用词的主体,例如'blueberr' 表示蓝莓、蓝莓等。
  • 您好!感谢您的所有想法@Felix 和 iBug。我回来寻找更多关于这个的想法。我可能已经找到了解决这个问题的线索,但我想这还不是我的编程水平。我从 Youtube 和 Google 搜索结果中看到了自然语言处理和 Word2Vec 的东西......但是是的,我想它们对我来说仍然太复杂了,无法学习哈哈哈

标签: python string extract


【解决方案1】:

这是一种方法,它可以处理通用算法,但不能处理特定食物的单数/复数问题。

导入字符串

lst = ['I want to buy some apple.',
       'Oranges are good for the health.',
       'I bought 2 blueberries yesterday.',
       'John is eating some grapes.',
       'My crush did not like me back.']

foods = {'apple', 'oranges', 'blueberries', 'grapes'}

translation = str.maketrans('', '', string.punctuation)
lst2 = [set(i.translate(translation).lower().split(' ')) & foods for i in lst]

# [{'apple'}, {'oranges'}, {'blueberries'}, {'grapes'}, set()]

【讨论】:

  • 你好@jp_data_analysis!是的,这在我尝试做的第一个版本中有效,但我正在尝试用户的输入是动态的。但再次感谢您的回答:)
  • @deedzM,没问题 - 如果有帮助,请随时接受或投票。
  • 是的,我试过你的和@Nestor Yanchuck,但它说“记录了声望低于 15 的投票,但不要公开显示”
  • 没关系。很高兴我的回答有所帮助。
【解决方案2】:

基本上,没有这样的魔法工具可以使用。您需要自己生成单词列表。我建议您查看nltk library。它将帮助您正确提取单词和句子。然后你应该分别检查每个单词(如if my_word in my_food_list: blablabla....)。

您也可以查看this similar question

【讨论】:

  • 哈!感谢@Nestor Yanchuck ...是的,我在继续搜索时遇到了这个!可悲的是,我认为我对此还不太有信心,否则我可能会发现它在我的编程水平上有点复杂,但再次感谢!顺便说一句,我试图对此投票,但我的声誉仍然很低
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
相关资源
最近更新 更多