如何根据枚举数将文本分割成子内容?

2024-09-26 21:53:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用nltkPunktSentenceTokenizer()为python中的文本分割句子。但是,有许多长句是以列举的方式出现的,我需要在这种情况下得到子句。在

示例:

The api allows the user to achieve following goals: (a) aXXXXXX ,(b)bXXXX, (c) cXXXXX. 

所需输出为:

"The api allows the user to achieve following goals aXXXXX. ""The api allows the user to achieve following goals bXXXXX."和{}

我怎样才能达到这个目标?在


Tags: theto文本api方式情况句子allows
2条回答

我将跳过这个显而易见的问题(即:“到目前为止,您尝试了什么?”)。您可能已经发现,punkSentenceTokenizer在这里并没有真正帮助您,因为它会将您的输入语句留在一块。 最好的解决方案很大程度上取决于你的输入的可预测性。下面的内容将在您的示例中起作用,但是正如您所看到的,它依赖于冒号和一些逗号,如果它们不在那里,则对您没有帮助。在

import re
from nltk import PunktSentenceTokenizer
s = 'The api allows the user to achieve following goals: (a) aXXXXXX ,(b)bXXXX, (c) cXXXXX.'
#sents = PunktSentenceTokenizer().tokenize(s)

p = s.split(':')
for l in p[1:]:
    i = l.split(',')
    for j in i:
        j = re.sub(r'\([a-z]\)', '', j).strip()
        print("%s: %s" % (p[0], j))

要获得子序列,可以使用RegExp Tokenizer。在

一个如何使用它来拆分句子的示例如下:

from nltk.tokenize.regexp import regexp_tokenize

str1 = 'The api allows the user to achieve following goals: (a) aXXXXXX ,(b)bXXXX, (c) cXXXXX.'

parts =  regexp_tokenize(str1, r'\(\w\)\s*', gaps=True)

start_of_sentence = parts.pop(0)

for part in parts:
    print(" ".join((start_of_sentence, part)))

相关问题 更多 >

    热门问题