如何使 sklearn.TfidfVectorizer 标记化特殊短语?
How to make sklearn.TfidfVectorizer tokenize special phrases?
我正在尝试使用 python 中 sklearn
包中的 TfidfVectorizer
创建一个 tf-idf table。例如我有一个字符串的语料库
"PD-L1 expression positive (≥1%–49%) and negative for actionable molecular markers"
TfidfVectorizer
有一个 token_pattern
参数,指示令牌应该是什么样子。
默认是token_pattern = token_pattern='(?u)\b\w\w+\b'
,它会把所有的单词按space拆分,去掉数字和特殊字符来创建token,生成如下的一些token
["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%
作为标记,而不会在 regrex 上过于疯狂?任何帮助是
非常感谢!
我使用模式 '[^ ()]+'
获取它 - 除了 space
、(
、)
之外的所有字符
可能需要将 punctuations
添加到此列表。
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
"PD-L1 expression positive (≥1%–49%) and negative for actionable molecular markers"
]
vectorizer = TfidfVectorizer()
print('token_pattern:', vectorizer.token_pattern)
vectorizer.token_pattern = '[^ ()]+'
print('token_pattern:', vectorizer.token_pattern)
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
结果
['actionable', 'and', 'expression', 'for', 'markers', 'molecular', 'negative', 'pd-l1', 'positive', '≥1%–49%']
我使用了文档中的示例代码 TfidfVectorizer
编辑:
查了文档,可以直接设置
vectorizer = TfidfVectorizer(token_pattern='[^ ()]+')
我正在尝试使用 python 中 sklearn
包中的 TfidfVectorizer
创建一个 tf-idf table。例如我有一个字符串的语料库
"PD-L1 expression positive (≥1%–49%) and negative for actionable molecular markers"
TfidfVectorizer
有一个 token_pattern
参数,指示令牌应该是什么样子。
默认是token_pattern = token_pattern='(?u)\b\w\w+\b'
,它会把所有的单词按space拆分,去掉数字和特殊字符来创建token,生成如下的一些token
["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%
作为标记,而不会在 regrex 上过于疯狂?任何帮助是
非常感谢!
我使用模式 '[^ ()]+'
获取它 - 除了 space
、(
、)
可能需要将 punctuations
添加到此列表。
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
"PD-L1 expression positive (≥1%–49%) and negative for actionable molecular markers"
]
vectorizer = TfidfVectorizer()
print('token_pattern:', vectorizer.token_pattern)
vectorizer.token_pattern = '[^ ()]+'
print('token_pattern:', vectorizer.token_pattern)
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
结果
['actionable', 'and', 'expression', 'for', 'markers', 'molecular', 'negative', 'pd-l1', 'positive', '≥1%–49%']
我使用了文档中的示例代码 TfidfVectorizer
编辑:
查了文档,可以直接设置
vectorizer = TfidfVectorizer(token_pattern='[^ ()]+')