从文档列表构建文档术语矩阵,每个文档都是列表形式

Build a document-term matrix from a list of documents, each of which is in list form

我想知道是否存在将文档列表转换为文档术语矩阵的优雅方法。这样做的动机是需要对文档中的术语进行微妙的转换,即词干。 输入数据就像

[['tom','want','apple'],['tom','love','pear']]

输出数据应该是矩阵或任何可以轻松转换为 numpy.array 的数据类型。就像:

[[1,1,1,0,0],[1,0,0,1,1]]

我现在拥有的是加入外部列表中的每个元素,然后在 sklearn.feature_extraction.text 中使用 CountVectorizer。但是对于大型语料库这样做是低效的。

有什么建议吗?谢谢。

使用MultiLabelBinarizer.

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
data = [['tom','want','apple'],['tom','love','pear']]
mlb.fit_transform(data)

Return

array([1, 0, 0, 1, 1],
      [0, 1, 1, 1, 0])

注意:文档按字母顺序排序。

mlb.classes_
>>> array(['apple', 'love', 'pear', 'tom', 'want'])