gpt4 book ai didi

python - NLTK Sentence Tokenizer,自定义句子启动器

转载 作者:行者123 更新时间:2023-11-28 22:44:14 31 4
gpt4 key购买 nike

我正在尝试使用来自 nltk 的 PunktSentenceTokenizer 将文本拆分为句子。文本包含以项目符号开头的列表,但它们不会被识别为新句子。我试图添加一些参数,但没有用。还有别的办法吗?

下面是一些示例代码:

from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters

params = PunktParameters()
params.sent_starters = set(['•'])
tokenizer = PunktSentenceTokenizer(params)

tokenizer.tokenize('• I am a sentence • I am another sentence')
['• I am a sentence • I am another sentence']

最佳答案

您可以继承 PunktLanguageVars 并调整 sent_end_chars 属性以满足您的需求,如下所示:

from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktLanguageVars

class BulletPointLangVars(PunktLanguageVars):
sent_end_chars = ('.', '?', '!', '•')

tokenizer = PunktSentenceTokenizer(lang_vars = BulletPointLangVars())
tokenizer.tokenize(u"• I am a sentence • I am another sentence")

这将导致以下输出:

['•', 'I am a sentence •', 'I am another sentence']

但是,这使 • 成为一个句子结束标记,而在您的情况下它更像是一个句子开始标记。因此这个示例文本:

I introduce a list of sentences.

  • I am sentence one
  • I am sentence two

And I am one, too!

根据您的文本的详细信息,会产生如下内容:

>>> tokenizer.tokenize("""
Look at these sentences:

• I am sentence one
• I am sentence two

But I am one, too!
""")

['\nLook at these sentences:\n\n•', 'I am sentence one\n•', 'I am sentence two\n\nBut I am one, too!\n']

PunktSentenceTokenizer 用于句子标记化而不是简单地使用诸如多分隔符拆分函数之类的东西的一个原因是,因为它能够学习如何区分用于句子的标点符号和使用的标点符号用于其他目的,例如“先生”。

但是,对于 • 应该没有这样的复杂性,所以我建议您编写一个简单的解析器来预处理项目符号格式,而不是滥用 PunktSentenceTokenizer 来处理它不是真正设计的东西为了。如何实现这一点取决于文本中这种标记的具体使用方式。

关于python - NLTK Sentence Tokenizer,自定义句子启动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29746635/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com