0
  1. 我应该使用 NLTK 还是正则表达式来拆分它?
  2. 我该如何选择代词(他/她)。我想选择任何有代词的句子。

这是一个更大项目的一部分,我是 Python 新手。你能给我指出任何有用的代码吗?

4

2 回答 2

1

NLTK 是您最好的选择。给定一串句子作为输入,您可以通过执行以下操作获得包含代词的句子列表:

from nltk import pos_tag, sent_tokenize, word_tokenize
paragraph = "This is a sentence with no pronouns. Take it or leave it."
print [sentence for sentence in sent_tokenize(paragraph)
       if 'PRP' in {pos for _,pos in pos_tag(word_tokenize(sentence))}]

回报:

['Take it or leave it.']

基本上,我们将字符串拆分为句子列表,将这些句子拆分为单词列表,并将每个句子的单词列表转换为一词性标签(这很重要,因为如果我们不这样做,当我们有多个句子中的代词,我们会得到重复的句子)。

于 2013-03-18T00:17:46.950 回答
1

我正在做一个有类似需求的 NLP 项目。我建议您使用NLTK,因为它使事情变得非常简单,并为我们提供了很大的灵活性。由于您需要收集所有带有代词的句子,您可以将文本中的所有句子拆分并保存在一个列表中。然后,您可以遍历列表并查找包含代词的句子。还要确保记下句子的索引(在列表中),或者您可以形成一个新列表。

下面的示例代码:

from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag

sentences = ['alice loves to read crime novels.', 'she also loves to play chess with him']
sentences_with_pronouns = []

for sentence in sentences:
    words = word_tokenize(sentence)
    for word in words:
        word_pos = pos_tag([word])
        if word_pos[0][1] == 'PRP':
            sentences_with_pronouns.append(sentence)
            break

print sentences_with_pronouns

输出:

['she also loves to play chess.']

PS还要检查pylucenewhoosh库,它们是非常有用的 NLP python 包。

于 2013-03-17T23:57:58.167 回答