【问题标题】:Python match word to word list after removing repeating characters删除重复字符后Python匹配单词到单词列表
【发布时间】:2017-09-10 12:19:07
【问题描述】:

我有一个带有正面和负面情绪的单词列表,例如['happy', 'sad']

现在在处理推文时,我会删除这样的重复字符(只允许重复 2 次):

happpppyyy -> happyy

saaad -> saad

检查是否例如saad 是单词列表的一部分,现在应该返回 True,因为它类似于 sad

如何实现这种行为?

【问题讨论】:

  • @PranavCBalan 解释?
  • @PranavCBalan:在我看来,这就像(耳语)Perl。
  • 需要考虑的一点:我认为匹配错误可能是不可避免的:例如,如果 saad 应该匹配 sad,那么陡峭的匹配 step 应该匹配吗?
  • @AndreasGrivas 是的,这是一种权衡,但我只处理表达情感的文字,这样的事情发生的情况并不多

标签: python regex nlp


【解决方案1】:

我会构建正则表达式来动态转换一个单词:

happy

进入

h+a+p+p+y+

将“快乐”单词列表传递给此:

import re

re_list = [re.compile("".join(["{}+".format(c) for c in x])) for x in ['happy', 'glad']]

然后测试它(使用any 返回True,如果任何快乐的正则表达式匹配:

for w in ["haaappy","saad","glaad"]:
    print(w,any(re.match(x,w) for x in re_list))

结果:

haaappy True
saad False
glaad True

【讨论】:

  • 我花了一段时间才理解这种方法。我认为这对我来说应该足够了;使用这种方法,我实际上可以跳过删除多个字符的步骤
猜你喜欢
  • 2013-08-11
  • 2020-04-02
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 2013-01-27
相关资源
最近更新 更多