【问题标题】:Split text into sentences by and/or通过和/或将文本拆分为句子
【发布时间】:2021-10-13 19:49:10
【问题描述】:

文本字符串:

text = ‘Turn left and take the door between stairs and elevator. Turn right to the corridor.’

愿望输出:

splitted_sentences= [‘turn left’, ‘take the door between stairs and elevator’, ‘turn right to the corridor’]

我们如何将这段文本拆分成 Python 中 splitted_sentences 列表中所示的句子?

【问题讨论】:

  • 为什么输出的第一个句子中包含“and”?您的程序或我们如何能够辨别哪个“和”与边界相关或不相关?如果这不是错字,那么我认为这项任务需要更深入的语言学,而不是简单的拆分。
  • 欢迎。你应该阅读tourHow to Ask。请编辑您尝试解决此问题并显示输出。顺便说一句,StackOverflow 不是代码编写服务。
  • @j1-lee,我输出的第一个句子包括“and”。那不是错字。问题是要辨别哪个“和”与边界相关或不相关?
  • 是的,如果你不能告诉我们为什么第一个“and”起到“句子边界”的作用,而第二个不是,那么就不可能得到答案。
  • @j1-lee,因为我尝试将路线描述转换为特定的导航任务。第一个是特定的任务,而第二个与“之间”有关。这只是路线描述的一个例子。每个项目都应该包含一个任务。有时将这些复合句子拆分为它们的组成子句以便于后续处理很有用。对不起,不清楚的问题。我想知道我应该研究什么方法。

标签: python text split nlp sentence


【解决方案1】:
"I write a code similar to the desired output."
import re
from nltk.tokenize import RegexpTokenizer
text = 'Turn left and take the door between stairs and elevator. Turn right to the corridor.'
text = text.lower()
text = text.replace("and",",")
split1 = re.split('; |[.] |[:]|, |\* |\n',text)
tokenizer = RegexpTokenizer(r'\w+')
tokens = [tokenizer.tokenize(word) for word in split1]
d = []
i = 0
for t in tokens:
    for a in t:
        if a == 'between':
            m = tokens.index(t)
while i < m:
    d.append(tokens[i])
    i +=1
d.append(tokens[m]+['and']+tokens[m+1])
n = m+2
while n < len(tokens):
    d.append(tokens[n])
    n +=1
print(d)

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • Nioce 工作!很高兴看到你想通了。
猜你喜欢
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 2022-07-06
相关资源
最近更新 更多