繁体   English   中英

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

[英]Extracting words from text using python regex

我有一个文本(字符串),我想在python中执行此任务:

我执行CountVectorizer方法以制作一袋文字。 您可以在这里找到此方法: http : //scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html

此方法包括删除stopWords,并且效果很好。 它会删除所有标点符号并打断每个单词。 但是除了单词之外,它还返回很多垃圾,例如单个字母和数字。

但是,此方法有一个名为“ token_pattern”的参数,该参数采用可以给我更好结果的字符串(regex)。

我想做的是:a)排除任何以数字开头,结尾或包含数字的单​​词。 b)从文本中排除任何数字c)排除所有 <= 2个字母的单词b)排除所有http页面

例如,此正则表达式应为我提供:

文字 =“乘坐Fido兜风可能很危险: http : //t.co/eR2WfAnZBI http://t.co/RF3bhPNPwR ',每年平均,卡车造成200亿空里程,造成数十亿美元的经济损失”

final_text =“每年有危险的举动 Fido乘坐卡车,平均造成数十亿空车里程,这使经济损失数十亿”

我在此先感谢您的时间和关注:)

这是一个正则表达式,可以捕获仅由长度为3或更大的字母组成的任何单词。

[a-zA-Z]{3,}

这是一条正则表达式,可以捕获其中没有URL的任何行。

^((?!(https?:\/\/)+([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w=?$#% \.-]*)).)*$

我还没有弄清楚如何将两者结合起来。 但至少,这是朝正确方向迈出的一步。 您可以将每个单词放在自己的行上,然后删除网址,然后匹配3个或更多字母的单词。 丑陋,但行得通。

我不知道python,但是regex对于任何编程语言都是相同的,所以我的答案是:

"(\s?\w+[0-9]+\w+\s?)|([0-9]+)|(\s\w\w\s)|(http://t.co/)"g

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM