在Python中更正文本的字符大小写和标点符号

时间:2017-04-26 08:29:38

标签: python string algorithm text python-module

我想知道是否有任何可用的模块/库可以修复解析给它的任何文本的大小写和标点符号。我对语法修正不感兴趣;相反,确保所有句子都以大写字母开头,逗号之后没有空格,“我”总是资本等。基本上修复用聊天写的文字看起来是正确的。我的搜索没有带来任何结果,我很高兴为这个基本想法使用更强大的工具。

如果Python模块/方法不存在,我猜它可以用正则表达式和许多if / then语句来完成,但有些东西告诉我这不是最好的做法吗?如果没有任何可用的东西,我很乐意写下我需要的东西。如果我可以指导如何解决这个问题,将不胜感激。以下是一些澄清任何含糊之处的例子:

  

当地的炸鱼薯条店?>>>当地的炸鱼薯条店在哪里?

     

我找不到我的眼镜,普通!>>>我找不到我的眼镜,很常见!

     

这个项目的scoPe是合理的.. >>>这个项目的范围是完全合理的。

我正在努力解决的是纠正句子结构和写作的保证错误,通常在人们之间的在线聊天和短信中找到,因此我将忽略任何预测。也许逆转它可能是一个有趣的挑战后!

2 个答案:

答案 0 :(得分:0)

我猜你没有太多的选择来构建一个小的解析器,并使用正确的替换函数而不是无数的if语句。我将此代码作为示例,但您可以添加更多"规则"。你也可以创建一个常见错误的词典,如dict [" wheres"] =" where' s&#34 ;,解析句子的单词,并检查是否有修复他们。或者你可以只搜索单词并用句子上的修正替换它们。

def parse(s):
    s = s.lower().replace("0","o").replace("3","e").replace("cant",r"can't").replace("wheres",r"where's").replace(" i "," I ")
    return str(s[0].upper()) + s[1:]

print parse("wheres the local Fish and chips shop?")
print parse("i cant find MY glasses , common!")
print parse("tHE scoPe of this project i is c0mpl3tely reasonable..")

输出:

Where's the local fish and chips shop?
I can't find my glasses , common!
The scope of this project is completely reasonable..

答案 1 :(得分:0)

另一种方法是使用 fastPunct (https://github.com/notAI-tech/fastPunct)

!pip install fastpunct
from fastpunct import FastPunct
fastpunct = FastPunct('en')
fastpunct.punct(["oh i thought you were here"], batch_size=32) 

#OUTPUT - ['Oh! I thought you were here.']