【发布时间】:2019-01-04 02:06:17
【问题描述】:
我正在使用具有以下样式的标记对文本 blob 进行矢量化:
hi__(how are you), 908__(number code), the__(POS)
如你所见,token 中附有__(info) 的一些信息,我正在使用 tfidf 提取关键词,如下:
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(doc)
indices = np.argsort(vectorizer.idf_)[::-1]
features = vectorizer.get_feature_names()
问题是,当我执行上述提取关键字的过程时,我怀疑矢量化器对象正在从我的 textblob 中删除括号。因此,我可以使用 tfidf 矢量化器对象中的哪个参数来将这些信息保留在括号中?
更新
我也尝试过:
from sklearn.feature_extraction.text import TfidfVectorizer
def dummy_fun(doc):
return doc
tfidf = TfidfVectorizer(
analyzer='word',
tokenizer=dummy_fun,
preprocessor=dummy_fun,
token_pattern=None)
和
from sklearn.feature_extraction.text import TfidfVectorizer
def dummy_fun(doc):
return doc
tfidf = TfidfVectorizer(
tokenizer=dummy_fun,
preprocessor=dummy_fun,
token_pattern=None)
但是,这会返回一个字符序列而不是我已经标记化的标记:
['e', 's', '_', 'a', 't', 'o', 'c', 'r', 'i', 'n']
【问题讨论】:
-
tokenizer=dummy_fun产生一个字符列表,因为 tokenize 需要接受一个字符串并返回一个可迭代的令牌。因为dummy_fun返回一个字符串,所以它被解释为一个可迭代的字符。请改用return doc.split()。 -
您能否使用正则表达式和虚拟方法更新您的答案,以供将来参考社区? @acattle
-
doc是单个文档还是文档列表?TfidfVectorizer.fit_transform()需要 a list of documents,而不是单个文档。也许试试vectorizer.fit_transform([doc])?
标签: python regex machine-learning scikit-learn nlp