首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex / "token_pattern“-学习文本向量器

Regex / "token_pattern“-学习文本向量器
EN

Stack Overflow用户
提问于 2015-01-24 19:27:12
回答 1查看 5.5K关注 0票数 1

我正在使用sklearn做一些NLP矢量化与一个tf-以色列国防军向量器对象。这个对象可以用关键字"token_pattern“来构造。

我希望避免使用hashtag (#foobar)、数字(和以数字开头的字符串,即10 or )、以'RT‘(retweet)开头的任何行或“已删除的tweet”行。

此外,我想忽略unicode。

我想保留URL(不是'http://'),并将它们标记为可能存在于其中的任何单词( any +)。

我对Regex有一些经验,但到目前为止还不需要更复杂的模式。

下面是我对所有事情的尝试.这显然不是最好的调查方法,但它确实总结了我目前对Regex规则的看法。

注意: skearn 这里使用字符串上的unicode标志显示默认的"token_pattern“,我可能不理解why...separate问题。

代码语言:javascript
复制
pat2 = r"(?im)([A-Z]+)(?<!^@)([A-Z]+)(?<!^#)([A-Z]+)(?<!^(RT))([A-Z]+)(?<!^Deleted)(?<=^(http://))([A-Z]+)"

我的崩溃:

代码语言:javascript
复制
(?im)  #Are flags for 'multi-line' and 'case insensitive'

([A-Z]+)(?<!^@) #A negative look back, match [A-Z]+ only if not preceded by 'starts with @'.

(?<=^(http://))([A-Z]+) #A positive look forward, match [A-Z]+ only if 'starts with "http://"' is present.

我觉得这不是一个优雅的解决方案,即使它被调整成工作.

提亚

更新:原始数据示例:

如果知道有帮助的话,我会用熊猫的数据框架来加载数据。我刚接触过熊猫,可能会错过一些基于熊猫的解决方案。

从这些原始数据中,我只想要从文本和URL中摘取的单词。太棒了!

生:

代码语言:javascript
复制
http://foxsportswisconsin.ning.com/profiles/blogs/simvastatin-20-mg-pas-cher-sur-internet-acheter-du-simvastatin-20

令牌化:

代码语言:javascript
复制
[foxsportswisconsin, ning, com, profiles, blogs, simvastatin, mg, pas, cher, sur, internet, acheter, du, simvastatin]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-24 21:15:44

tl;dr:如果你写了一个超过20个字符的regex,你做错了什么,但这可能是一个可以接受的黑客。如果您编写的regex超过50个字符,您需要立即停止。

我首先要说的是,这个问题绝不能用正则表达式来解决。

您所描述的大多数步骤都应该在预处理或后处理中处理。您不应该试图想出一个regex来过滤以Deleted tweetRT开头的内容,您应该在预处理中忽略这些行。

忽略unicode?然后可能值得离开互联网,因为从字面上来说,互联网上的所有东西,以及记事本以外的所有东西都是unicode。如果您想删除无法用ascii表示的所有unicode字符(这就是我假设的意思?),那么编码步骤就是修复这个问题的地方:

代码语言:javascript
复制
<string>.encode('ascii', 'ignore')

至于忽略http,您应该将http设置为秒针。这可以作为另一个参数传递给您正在使用的向量器。

一旦完成,您使用的令牌正则表达式(可能仍然不是regex的例子,但这是sklearn提供的接口)实际上非常简单:

代码语言:javascript
复制
'\b[a-zA-Z]\w+\b'

这里唯一要实现的更改是忽略上面提到的数字符号(如10mg )。

值得注意的是,这种重级别的令牌删除将对您所要做的任何分析都产生负面影响。如果你有一个合适的语料库,你不应该删除任何标记,如果它是小删除停止词和使用词干器或狐猴是一个很好的方法,但这种象征性删除是不好的做法,并将导致过度适合。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28129365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档