如何在我的词汇表中为 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 项目指定多个目标?
如何在 Tensorflow 中为未知单词添加新的嵌入(训练和预设测试)
如何在我的 iphone 中为我的网站添加有效且受信任的安全证书?