0

"Who acted as (?P<role>.*) in (?P<movie>.*)"のようなクエリに一致させたいテンプレート"Who acted as tony montana in Scarface"です。

ここでロール名に「in」が含まれている場合、または映画名に「in」が含まれている場合、正規表現の一致はうまくいきません。

例えば:"Who acted as k in men in black" will give "k in men" as role.

このクエリでは貪欲でないアプローチが機能する可能性がありますが、映画に「in」という単語が含まれている場合はトスになります。ここで考えられるすべての解釈を取得するにはどうすればよいですか?

4

1 に答える 1

0

このようなフレーズを指定'a in b in c in d'すると、単語 によってすべての可能なパーティションが生成されますin

words = phrase.split()

for n, w in enumerate(words):
    if w == 'in':
        print '(%s) in (%s) ' % (
            ' '.join(words[:n]),
            ' '.join(words[n+1:]))

特定の問題についてin、フレーズに 3 つの s がある場合、「中間」の解釈 ( (a in b) in (c in d)) はおそらく正しいでしょうが、2 つinの s では、テキスト操作によってこれを解決する方法はありません。右」のパーティションも同様に可能性が高いため、次のことを考慮してください。

Who acted as jeebs in men in black
Who acted as woman in red in matrix

これを正しく解析するには、NLP またはデータベース主導の方法を使用する必要があります。

于 2014-11-25T13:14:27.753 に答える