我想使用自己的算法从训练数据中提取要素,然后使用CountVectorize
中的scikit-learn
进行拟合和转换。
目前我在做:
from sklearn.feature_extraction.text import CountVectorizer
cvect_obj = CountVectorizer()
vects = cvect_obj.fit_transform(traning_data)
fit_transform(traning_data)
会自动提取功能并对其进行转换,但我想使用自己的算法来提取功能。
答案 0 :(得分:1)
实际上直接使用它是不可能的。通过scikit-learn规则它们只添加成熟的算法。自出版物,200多次引用以及广泛使用和有用性以来,经验法则至少为3年。还将考虑包括在广泛使用的方法上提供明确改进(例如,增强的数据结构或有效近似)的技术。
此外,您的实现不需要在scikit中学习与scikit-learn工具一起使用。以scikit-learn兼容的方式实现您喜欢的算法,将其上传到github,它将列在Related Projects下。
答案 1 :(得分:1)
由于您无法改变sklearn核心,因此您可以随时保留自己的功能提取。所有你必须确保sklearn中的大多数数字模块处理稀疏矩阵,如scipy.sparse.csr_matrix。
您需要的只是一种方法或模块,它以原始形式(例如,句子)获取数据,并将其转换为稀疏矩阵。我要写的基本框架是:
class MyFeatureExtractor:
def __init__():
dictionary = {}
vocab = []
def fit(list of sentences):
# learn the words after basic nlp pipeline
# build dictionary/map between word and feature index
def transform(new sentences):
# for each sentence, build a sparse vector of length equal to
# your vocabulary, or size of dictionary
# return the matrix
现在,您可以使用FeatureExtractor进行转换,就像常规的sklearn模块一样。