【发布时间】:2021-08-10 03:30:18
【问题描述】:
我正在尝试使用 python 中 sklearn 包中的 TfidfVectorizer 创建一个 tf-idf 表。例如我有一个字符串的语料库
"PD-L1 expression positive (≥1%–49%) and negative for actionable molecular markers"
TfidfVectorizer 有一个 token_pattern 参数,指示令牌应该是什么样子。
默认是token_pattern = token_pattern='(?u)\b\w\w+\b',它会用空格分割所有单词并删除数字和特殊字符来创建标记,并生成一些如下所示的标记
["pd", "expression", "positive","and" ,"negative" ,"for" ,"actionable" ,"molecular" ",markers"]
但我想要的是:
["pd-l1", "expression", "positive", "≥1%–49%","and" ,"negative" ,"for" ,"actionable" "molecular" ,"markers"]
我已经调整了几个小时的 token_pattern 参数,但无法正确处理。或者,这里有没有一种方法可以明确地告诉矢量化器我想将pd-l1 和>1%-49% 作为令牌而不会对正则表达式过于疯狂?任何帮助都是
非常感谢!
【问题讨论】:
-
您应该显示您尝试使用的
token_pattern。 -
使用普通模块
re我可以在re.findall(token_pattern, text)中使用token_pattern='[^ ()]+'(除space、(、)之外的所有字符)来拆分它,但TfidfVectorizer可以在不同的方式。 -
谢谢!如本文所述,我使用默认设置,尝试对其进行调整,但失败了。我需要把所有失败的试验都放在这里吗?
-
如果你能创建最少的工作代码,我们可以复制和测试想法会更简单。您可以添加试验以查看您已经测试过的内容。
标签: python regex scikit-learn tokenize tfidfvectorizer