如何在我的词汇表中为 CountVectorizer 使用正则表达式?

Posted

技术标签:

【中文标题】如何在我的词汇表中为 CountVectorizer 使用正则表达式?【英文标题】:How can I use regular expressions in my vocabulary for CountVectorizer? 【发布时间】:2018-12-23 12:22:12 【问题描述】:

如何使“文档中的第一个词是 [目标词]”成为一项功能?

考虑这两句话:

example = ["At the moment, my girlfriend is Jenny. She is working as an artist at the moment.",
       "My girlfriend is Susie. She is working as an accountant at the moment."]

如果我试图衡量关系承诺,我希望能够将“此刻”这个短语视为一个特征当它以这样的开头出现时。

我希望喜欢能够在词汇表中使用正则表达式...

phrases = ["^at the moment", 'work']
vect = CountVectorizer(vocabulary=phrases, ngram_range=(1, 3), token_pattern=r'\w1,')
dtm = vect.fit_transform(example)

但这似乎不起作用。

我也试过这个,但是得到一个“词汇为空”的错误......

CountVectorizer(token_pattern = r"(?u)^currently")

这样做的正确方法是什么?我需要自定义矢量化器吗?有什么简单的教程可以链接我吗?这是我的第一个 sklearn 项目,我已经在谷歌上搜索了好几个小时。非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

好的,我想我已经找到了一种方法,基于破解本教程中的 get_tweet_length() 函数...... https://ryan-cranfill.github.io/sentiment-pipeline-sklearn-4/

我添加了这个功能...

def first_words(text):
    matchesList = re.findall('^at the moment', text, re.I)
    if len(matchesList) > 0:
        return 1
    else:
        return 0

并将它们与基本 sklearn_helper pipelinize_feature() 函数一起使用,该函数将输出转换为 sklearn 的 FeautreUnion 函数所需的数组格式。

vect4 = pipelinize_feature(first_words, active=True)

然后我可以通过 FeatureUnion 将它与我的普通 CountVectorizers 一起使用

unionObj = FeatureUnion([
        ('vect1', vect1),
        ('vect2', vect2),
        ('vect4', vect4)
])

【讨论】:

以上是关于如何在我的词汇表中为 CountVectorizer 使用正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 podfile 中为我的 Xcode 项目指定多个目标?

如何在我的 GraphQL 中为对象中的对象列表定义类型

如何在 Tensorflow 中为未知单词添加新的嵌入(训练和预设测试)

如何在我的 iphone 中为我的网站添加有效且受信任的安全证书?

如何在我的科尔多瓦应用程序中为 Facebook 页面点赞?

python —— 文本特征提取 CountVectorize