我有一个文本(字符串),我想在 python 中执行此任务:
我执行CountVectorizer方法以制作一个单词。您可以在此处找到此方法:http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html
此方法包括删除stopWords,它工作正常。它删除任何标点符号并打破每个单词。但除了单词之外,它还会返回大量垃圾,如单个字母和数字。
这个方法虽然有一个名为“token_pattern”的参数,它带有一个可以给我更好结果的字符串(正则表达式)。
我想做的是: a)排除任何开头,结尾或包含数字的单词。 b)从文本中排除任何数字 c)排除任何字词< = 2个字母 b)排除所有http页面
例如,这个正则表达式应该给我这个:
文字 =“乘坐Fido可能会很危险:http://t.co/eR2WfAnZBI http://t.co/RF3bhPNPwR',平均每年卡车需要200亿英里空,这使经济损失了数十亿美元“
final_text =“可以冒险乘坐Fido去乘坐每年平均十亿英里的空车是卡车,这需要花费经济数十亿美元”
我提前感谢你的时间和关注:)
答案 0 :(得分:1)
这是一段正则表达式,它抓住任何由3个或更多长度的字母组成的单词。
[a-zA-Z]{3,}
这是一段正则表达式,可以抓取任何没有URL的行。
^((?!(https?:\/\/)+([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w=?$#% \.-]*)).)*$
我还没弄清楚如何将两者结合起来。但至少,这是朝着正确方向迈出的一步。您可以将每个单词放在自己的行上,然后删除网址,然后匹配3个或更多字母的单词。丑陋,但会工作。
答案 1 :(得分:0)
我不懂python,但正则表达式对于任何编程语言都是一样的,所以我的回答是:
"(\s?\w+[0-9]+\w+\s?)|([0-9]+)|(\s\w\w\s)|(http://t.co/)"g