为了实现下面的目标,我们开发了 text2vec:
从概念上,我们可以把 API 分成以下几个部分:
参见 向量化.
create_* 系列函数, vocab_vectorizer() and hash_vectorizer() 被用来生成词汇表,Document-Term matrices,Term co-occurence matrices。这些函数负责将文本转换为数字的形式。
create_vocabulary();create_dtm();create_tcm();vocab_vectorizer(), hash_vectorizer().所有 create_* 函数支持 tokens 的迭代器作为输入。例子如下:
itoken() 用来生成 tokens 的迭代器ifiles() 用来生成文件迭代器。注意, text2vec 不处理文件输入输出,用户需要提供自定义的读取函数,比如 data.table::fread() 或者 readr 包。如果用户需要自定义文件来源,比如从数据库导入数据,用户可以自定义自己的迭代器函数
text2vec 提供统一的模型接口,与 scikit-learn 类似。text2vec 模型是可转换的,
所有 text2vec 模型都是可变的,这意味着 fit() 和 fit_transform() 方法将会根据指定参数修改模型。
所有的模型都有统一的借口,这里有一些重要的动词用来进行模型的处理:
model$new(...) - 生成一个模型对象,设置初始化参数。这些参数是模型相关的,比如 LDA 模型需要设置主题数 k,alpha 和 eta 先验。model$fit(x, ...) - 拟合模型model$fit_transform(x, ...) - 拟合模型并转换数据model$transform(x_new, ...) - 使用已经训练好的模型转换数据。参见 Distances .
text2vec 包提供了两套函数用来评价多种距离和相似性。所有函数都十分关注计算性能和内存的效率:
sim2(x, y, method) - 计算两个矩阵,x和y,每一行的使用指定方法的相似性psim2(x, y, method) - 计算两个矩阵,x和y,每一行的并行相似性。dist2(x, y, method) - 计算两个矩阵,x和y,每一行的使用指定方法的距离dist2(x, y, method) - 计算两个矩阵,x和y,每一行的使用指定方法的并行距离下面的方法已经实现了: