Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Sci工具包的计数向量器转换输入,仅匹配词汇表中的精确单词_Python_Scikit Learn_Data Science_Countvectorizer_Scikits - Fatal编程技术网

Python 使用Sci工具包的计数向量器转换输入,仅匹配词汇表中的精确单词

Python 使用Sci工具包的计数向量器转换输入,仅匹配词汇表中的精确单词,python,scikit-learn,data-science,countvectorizer,scikits,Python,Scikit Learn,Data Science,Countvectorizer,Scikits,我有一个二维数组。数组的每一行都是烹饪配方,每一列都包含配方的成分。我想创建一个标准化的成分二进制矩阵。标准化的二进制矩阵将具有与配方矩阵相同的行数(对于每个配方)和每列中所有成分的二进制向量。如果配方中存在该成分,则该元素的值为1(如果不是零值) 现在,二进制矩阵的出现次数超过1。这是因为计数向量器匹配词汇表中的多个单词。 例如,假设我的词汇是 {'chicken': 0, 'chicken broth': 1, 'carrots': 2} 假设我要变换的向量是 ['chicken','ca

我有一个二维数组。数组的每一行都是烹饪配方,每一列都包含配方的成分。我想创建一个标准化的成分二进制矩阵。标准化的二进制矩阵将具有与配方矩阵相同的行数(对于每个配方)和每列中所有成分的二进制向量。如果配方中存在该成分,则该元素的值为1(如果不是零值)

现在,二进制矩阵的出现次数超过1。这是因为计数向量器匹配词汇表中的多个单词。 例如,假设我的词汇是

{'chicken': 0, 'chicken broth': 1, 'carrots': 2}
假设我要变换的向量是

['chicken','carrots']
二元矩阵将这样变换

[2, 0, 1]
当我想要的时候

[1,0,1]
这是因为“鸡”与“鸡”搭配,但也与“鸡汤”搭配。下面是我的代码片段。我只想匹配词汇表中某个单词的精确出现次数。是否有任何参数或任何方式,我可以用来实现这一点?我尝试了ngrams参数,但没有成功

cv = CountVectorizer(vocabulary=unique_igredients,lowercase=False)
taggedSentences = cv.fit_transform(unique_igredients)

#encode document

for i in recipes:
    vector = cv.transform(i)
    mylist = sum(map(numpy.array, vector.toarray()))
    vectorized_matrix_m.append(mylist.tolist())

N-grams可用于将单词
chicken
鸡汤中分离出来。N-grams(在本例中为双克)将
鸡汤
(2个不同的标记)转换为单个标记
鸡汤
,因此我们可以按需要的方式表示成分的计数:
[1,0,1]
而不是
[2,0,1]
。这里有一个答案链接。要使用Scikit learn实现n-gram,您需要将
n-gram\u range
参数设置为任务所需的n-gram(双克、三克等)。对于本例,它是
n_gram\u range=(2)
,需要根据成分的最大字数增加

注意:不要使用N克范围的
N克范围=(1,2)
,这仍然会导致代币
鸡肉
与双克代币
鸡肉肉汤
分开计算

总之,您可以如下更改代码的第一行(假设
max\u word\u count
是如上所述的最大字数):


希望这个迟来的答案有帮助

问题解决了吗?
cv = CountVectorizer(vocabulary=unique_ingredients, lowercase=False, ngram_range=(max_word_count))