我的任务是分类免费文本来源于客户对我们产品的抱怨。
我创建了一个分类法,并有大约10个不同的类别。我意识到这些类别包括关键词。
示例:
"Customer doesn't understand how to use the product".关键词:理解,知识,了解,意识。
记录:
Training, Customer doesn't understand how to use the product我在用谷歌预测API。在培训模型时,我会将以前的文本归类为:“客户不知道如何使用该产品”--培训。
如何添加关键字到免费的文本/培训数据,以帮助模型更好的表现,并提供一个更好的信心水平?
培训组的数据:
Training, understand knowledge know aware
Training, Customer doesn't understand how to use the product现在,我在相同的训练数据中添加关键字,但想找一个更好的建议。
发布于 2016-03-04 19:17:18
假设您正在进行监督学习,以训练一个模型,该模型在部署时将以文本作为输入并输出标签(例如,主题)或类概率,那么您可能要做的是平衡的,分层抽样。假设有足够的标签数据,确保最后的培训集对每个类/标签都有一个平衡的文本示例。根据您的情况,您可能需要超过/低于示例,或者以某种方式处理高度不平衡的类的问题(请参阅八种对抗不平衡阶级的策略)。
使用一袋袋话技术的最简单的NLP方法,简单地表示句子中一个单词的存在/缺失。因此,每个句子都被表示为长度n的向量,其中n=数据集中唯一单词的数目。
data_set <- c("the big dog", "the small cat", "the big and fat cow")
words <- strsplit(data_set, split = " ") #tokenize sentences
words
##[[1]]
##[1] "the" "big" "dog"
##
##[[2]]
##[1] "the" "small" "cat"
##
##[[3]]
##[1] "the" "big" "and" "fat" "cow"
vec <- unique(unlist(words)) #vector representation of sentences
##[1] "the" "big" "dog" "small" "cat" "and"
##[7] "fat" "cow"
m <- matrix(nrow = length(data_set), ncol = length(vec))
for (i in 1:length(words)) { #iterate the index of tokenized sentences
vec_rep <- vec %in% words[[i]] #create binary word-feature vector
m[i,] <- vec_rep #update matrix
}
df <- data.frame(m, row.names = NULL)
names(df) <- vec
df
## the big dog small cat and fat cow
##1 TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
##2 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE
##3 TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE有时,您可以通过添加双克和tri特性来提高性能。
##given: "the big dog"
##unigrams <- {the, big, dog}
##bigrams <- {the big, big dog}
##trigrams <- {the big dog}有时,按频率加权单词可以提高性能或计算tf-以色列国防军。
在我的经验中,另一种提高性能的方法是定制语言特性工程,尤其是如果数据来自于充斥拼写错误、缩略语、俚语和其他单词变体的社交媒体来源。标准的NLP方法通常会删除止词 (例如,a/an、this/that等)从向量表示(因为封闭类,高频词往往有助于区分类别/标签边界)。由于向量表示通常是高维的(在语料库/数据集中约为单一词的数字),维数约简技术可以提高性能。例如,人们可以在单词特征的跨类分布上计算chi-sq、info增益等--只将这些特征/单词保持在某个阈值或低于某个预先确定的p值)。
https://datascience.stackexchange.com/questions/10531
复制相似问题