用python2.7和nltk替代代词

正如标题所示,我正在尝试在字符串中查找代词,并将其替换为前面的代词:

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

我使用pos标签来返回代词和名词。 我需要知道如何在不知道句子的情况下进行替换,这意味着如何在句子中指定主题来替代代词。 有什么建议么?


我不知道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.

为了在最一般的情况下解决你的问题,你应该找到(或作出)英语(或任何其他)语言的正式说明,这可以告诉你句子的哪一部分是主语,动词,宾语等例如:许多简单的英语句子的形式是(括号[]之间的部分是可选的,括号()之间的部分是选择,即(| 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英语不是我的母语,所以我希望我已经使用了正确的术语!

链接地址: http://www.djcxy.com/p/12761.html

上一篇: replacing pronoun with its antecedent using python2.7 and nltk

下一篇: Ember template and Google AdSense