使用python正则表达式从文本中提取单词

时间:2015-08-05 13:03:19

标签: python regex

我有一个文本(字符串),我想在 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去乘坐每年平均十亿英里的空车是卡车,这需要花费经济数十亿美元”

我提前感谢你的时间和关注:)

2 个答案:

答案 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