【发布时间】:2013-06-21 22:05:22
【问题描述】:
所以我构建了一个句子标记器,它将段落分成句子、单词和字符……每一个都是一种数据类型。但是句子系统是一个两阶段系统,因为像'。 . 。把它扔掉,感觉它一次只写一个字母,但如果它是 '...' 没有空格,它就可以正常工作。
所以输出有点拼接,但如果我可以对其进行一些二次处理,它会完美地工作。所以这就是我的问题所在......我不知道如何编写一个系统,允许我将每个没有结束句标点符号的句子附加到前一个句子而不会丢失任何东西。
以下是输出的示例以及我需要的示例:
一些被拼接的句子……
还有一个延续
这不能被美国混淆
在那个
最后一句话……
一个缩写结束了句子!
所以句子对象不以正常的句尾分隔符结尾,即'.'、'?'、'!'需要附加到下一个句子......直到有一个带有真正句尾分隔符的句子。让这变得艰难的另一件事是'。 . 。算作一个延续,而不是一个句子的结尾。所以这也需要附加。
应该是这样的:
一些被拼接的句子......并且有一个延续。
这不能被美国混淆
在最后一句话中……一个缩写词结束了这句话!
这是我正在使用的代码:
last = []
merge = []
for s in stream:
if last:
old = last.pop()
if '.' not in old.as_utf8 and '?' not in old.as_utf8 and '!' not in old.as_utf8:
new = old + s
merge.append(new)
else:
merge.append(s)
last.append(s)
所以这个方法有一些问题......
它只将1个句子附加到另一个句子,但如果有2个或3个需要添加,它不会继续附加。
如果第一个句子中没有任何标点符号,它会删除它。
它不处理'. . 。作为延续。我知道我没有为此写任何东西,那是因为我不完全确定如何解决这个问题,句子以缩写结尾,因为我可以数出有多少'。在句子中,但它真的会被“U.S.A.”抛弃因为这算作3个时期。
所以我已经为句子类编写了一个__add__ 方法,因此您可以执行sentence + sentence 并且这是一种将一个附加到另一个的方法。
对此的任何帮助将不胜感激。如果有任何不清楚的地方,请告诉我,我会尽我最大的努力去实现它。
【问题讨论】:
-
你能递归地阐明你想要什么吗?你想要一个递归函数还是任何可以完成这项工作的东西?
-
它不一定需要是隐性的......但我可能用这个词太松了......我的意思是我不希望它继续合并相同的感觉直到它得到一个真正的感觉突破。这样做的方法不必是隐性的。我已经更新了标题,以免误导。
-
@WoLpH 我认为他指的是牙龈萎缩
-
+1 用于广泛的问题并提供信息顺便说一句:)
-
@WoLpH 谢谢...我正在构建您的代码。你有正确的想法。我只需要修改它以在我的类结构中工作。非常感谢您的宝贵时间。
标签: python algorithm object append