在python中检测文本中的缩写

在python中检测文本中的缩写,python,nlp,Python,Nlp,我想在文本中找到缩写并删除它。我目前正在做的是识别连续的大写字母并删除它们 但我看到它并没有删除缩写,比如MOOCs,M.O.O.C,M.O.O.Cs。在python中有没有一种简单的方法可以做到这一点?或者有我可以使用的库吗?reregex库可能是这项工作的工具 要删除每个连续大写字母字符串,可以使用以下代码: import re mytext = "hello, look an ACRONYM" mytext = re.sub(r"\b[A-Z]{2,}\b", "", mytext) 这

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


但我看到它并没有删除缩写,比如
MOOCs
M.O.O.C
M.O.O.Cs
。在python中有没有一种简单的方法可以做到这一点?或者有我可以使用的库吗?

reregex库可能是这项工作的工具

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

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
)。然后用第二个字符串替换它们,

关于regex最方便的一点是,它可以很容易地被修改以适应更复杂的情况。例如:

mytext = re.sub(r"\b[A-Z\.]{2,}\b", "", mytext)
mytext = re.sub(r"\b[A-Z\.]{2,}s?\b", "", mytext)
将替换连续的大写字母和句号,删除A.B.C.D.和ABCD等首字母缩写。
之前的
是必需的,因为
否则被regex用作一种通配符

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

mytext = re.sub(r"\b[A-Z\.]{2,}\b", "", mytext)
mytext = re.sub(r"\b[A-Z\.]{2,}s?\b", "", mytext)
此正则表达式将删除ABCD、A.B.C.D甚至A.B.C.Ds等首字母缩写词。如果需要删除其他形式的首字母缩略词,可以很容易地修改regex以适应它们


re
库还包括findall或match函数等函数,允许程序分别定位和处理每个首字母缩写词。例如,如果您想查看正在删除的首字母缩略词列表并检查其中是否有合法的单词,这可能会很有用。

一种直观的方法是使用regex

此正则表达式执行以下任务:([A-Z]\.*){2,}s

这在python中给出:

import re
re.sub("([A-Z]\.*){2,}s?","", your_text)
如有疑问,请访问regex文档

您可能想考虑使用{2,}而不是+。这将匹配并移除单个大写字母,如“I”,或从“A”开始的句子。再次考虑,这也将删除文本中的每一个大写字母,因此它需要一些<代码> \W\/Case> s来保持它包含“你可能要考虑使用{ 2,}”确实是,好的一个!我还忘了在我的答案中把\翻一番,以使它更明显。谢谢你指出这一点。我编辑了我的答案。这是一个完美的答案。非常感谢:)我将在我的文本中应用此表达式。此表达式匹配至少以三个大写字母开头的部分单词。例如:
TESting
匹配
TES
。此外,如果一个句子和后面的句子之间缺少空格,第二个句子的第一个单词将被删除。例如,
测试这个表达式。然后另一个句子。
将删除
。然后
。啊,谢谢你,我应该用\b而不是\w。我编辑了我的答案,希望能解决这些问题。