检测python中文本中的缩写

时间:2017-12-10 01:08:16

标签: python nlp

我想在文本中找到缩写并将其删除。我目前正在做的是识别连续的大写字母并删除它们。

但我发现它不会删除MOOCsM.O.O.CM.O.O.Cs等缩写。有没有一种简单的方法在python中执行此操作?或者我可以使用任何库吗?

2 个答案:

答案 0 :(得分:2)

re正则表达式库可能就是这项工作的工具。

为了删除每个连续大写字母的字符串,可以使用以下代码:

import re
mytext = "hello, look an ACRONYM"
mytext = re.sub(r"\b[A-Z]{2,}\b", "", mytext)

此处,正则表达式"\b[A-Z]{2,}\b"搜索多个连续的(由[...]{2,})大写字母(A-Z表示),形成一个完整的单词(\b...\b)。然后用第二个字符串""替换它们。

关于正则表达式的便利之处在于它可以轻松地针对更复杂的情况进行修改。例如:

mytext = re.sub(r"\b[A-Z\.]{2,}\b", "", mytext)

将替换连续的大写字母和句号,删除像A.B.C.D这样的首字母缩略词。以及ABCD。 \之前的.必须为.,否则正则表达式将其用作一种通配符。

?说明符也可用于删除以s结尾的首字母缩略词,例如:

mytext = re.sub(r"\b[A-Z\.]{2,}s?\b", "", mytext)

这个正则表达式将删除像ABCD,A.B.C.D甚至A.B.C.Ds这样的首字母缩略词。如果需要删除其他形式的首字母缩略词,可以轻松修改正则表达式以适应它们。

re库还包括findall或match函数等函数,它们允许程序单独定位和处理每个首字母缩略词。例如,如果您想要查看正在删除的首字母缩略词列表并检查那里没有合法的词语,这可能会派上用场。

答案 1 :(得分:0)

直观的方式是使用正则表达式

这个正则表达式完成了这项工作:([A-Z] \。*){2,} s?

在python中提供:

import re
re.sub("([A-Z]\.*){2,}s?","", your_text)

如有疑问,请访问正则表达式文档 https://docs.python.org/2/library/re.html#re.sub