【发布时间】:2012-11-05 17:48:30
【问题描述】:
(这个问题是关于一般的字符串检查而不是自然语言处理本身,但如果您将其视为 NLP 问题,请想象它不是当前分析器可以分析的语言,为简单起见,我将使用英文字符串,例如)
假设一个单词只有 6 种可能的形式
- 首字母大写
- 它带有“s”的复数形式
- 带有“es”的复数形式
- 大写+“es”
- 大写+“s”
- 没有复数或大写的基本形式
假设我想找到第一个实例的索引,任何形式的单词coach 出现在一个句子中,有没有更简单的方法来执行这两种方法:
long if 条件
sentence = "this is a sentence with the Coaches"
target = "coach"
print target.capitalize()
for j, i in enumerate(sentence.split(" ")):
if i == target.capitalize() or i == target.capitalize()+"es" or \
i == target.capitalize()+"s" or i == target+"es" or i==target+"s" or \
i == target:
print j
迭代 try-except
variations = [target, target+"es", target+"s", target.capitalize()+"es",
target.capitalize()+"s", target.capitalize()]
ind = 0
for i in variations:
try:
j == sentence.split(" ").index(i)
print j
except ValueError:
continue
【问题讨论】:
-
#2 和#3 相同。一个应该是“s”,另一个应该是“es”吗?
-
使用正则表达式会简单得多。
标签: python string nlp stemming