10

タイトルが示すように、文字列内の代名詞を探して、次のような先行詞に置き換えようとしています。

[in]: "the princess looked from the palace, she was happy".
[out]: "the princess looked from the palace, the princess was happy". 

pos タグを使用して、代名詞と名詞を返します。代名詞を代名詞に置き換えるには、文の中で主語を指定する方法を意味する、文を知らずに置き換える方法を知る必要があります。助言がありますか?

4

1 に答える 1

5

nltk パッケージはわかりませんが (使用したことはありません)、すぐに答えが得られるようです。nltk.org の解析ツリーの例を見ると、サブジェクトが「NP-SBJ」タグで正常にラベル付けされていることがわかります。これはあなたが探しているものではありませんか?

(先ほど、タイトルの「nltk」の部分を見落としていたので、下に書いてみました。このような問題の解決方法(特にパッケージがない場合)の一般的な紹介として面白いのではないかと思いますが、だから私はここにそれを残します:)

これは、Python の質問というよりは、「自然言語」(つまり英語) の質問です。どのような種類の文を期待するか、より具体的に教えていただけますか? 考えられるすべての英文で機能するはずですか? それは本当に難しいと思います。

文が十分に「簡単」であれば、最初の動詞の前のすべてが主語であると想定するだけで十分かもしれません。これはあなたの例では機能しますが、次の文では機能しません:

yesterday the princess looked from the palace, she was happy.
the princes who drank tea looked from the palace, she was happy.

(後者の文では、主語は「お茶を飲んだ王女」であり、「お茶を飲んだ」の部分は「形容詞句」であることに注意してください)。

また、代名詞が主語を指していない場合 (たとえば目的語を指している場合) にどうするかを指定します。

the princess looked at the prince, he was happy.

最も一般的なケースで問題を解決するには、文のどの部分が主語、動詞、目的語などであるかを正確に示すことができる、英語 (またはその他の) 言語の正式な仕様を見つける (または作成する) 必要があります。 . 例: 多くの単純な英語の文は次の形式です (括弧 [] で囲まれた部分はオプション、括弧 () で囲まれた部分は選択、つまり、(the|a) は「the」または「a」のいずれかを選択する必要があることを意味します):

sentence := subject verb [object]

仕様の右側の各部分は、より詳細に指定する必要があります。例:

subject, object := (noun_part_of_sentence|noun_part_of_sentence_plural)
noun_part_of_sentence := article [adjectivelist] [noun_modifier] noun # I guess there is a formal name for this...
noun_part_of_sentence_plural := [adjectivelist] [noun_modifier] noun_plural # note: no article
adjectivelist:= adjective [adjectivelist] # i.e., one or more adjectives

上記の形容詞句を含むより複雑な文の場合、上記の仕様では不十分であり、次のようにする必要があります。

noun_part_of_sentence := (the|a) [adjectivelist] [noun_modifier] [noun] [adjective_phrase]
adjective_phrase := relative_pronoun verb [object]
relative_pronoun := (who|which|that)

上記の仕様はすでに非常に強力であることに注意してください: (動詞、名詞、冠詞などの各単語のタイプを正しく識別できる場合)、次の文を正常に検出できます。

The princess drank the tea.
The beautiful princess drank the tea.
The beautiful princess drank delicious the tea.
A beautiful princess drank delicious the lemon tea.
The beautiful princess who saw the handsome prince drank the refreshing tea.
The beautiful princess who saw the handsome prince who made the tea drank the refreshing tea.

ただし、「王女が宮殿を見た」、「王女がお茶を飲んだ」(注:「お茶」ではない)などの文は(まだ)許可されていません。秘訣は、期待する文のタイプに適したレベルまで正式な仕様を拡張することです。

文を正常に解析した後、(したがって) 主語、代名詞が何であるかを知り、置換を行うことができます。ただし、英語は明確ではないことに注意してください。たとえば、次のようになります。

The princess looked at her mother, she was happy.

彼女は王女を指していますか、それとも母親を指していますか?

幸運を!

PS 英語は私の母国語ではないので、すべてに適切な用語を使用したことを願っています!

于 2013-04-08T10:46:02.853 に答える