首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建培训数据

创建培训数据
EN

Data Science用户
提问于 2016-03-04 18:31:17
回答 1查看 1.4K关注 0票数 4

我的任务是分类免费文本来源于客户对我们产品的抱怨。

我创建了一个分类法,并有大约10个不同的类别。我意识到这些类别包括关键词。

示例:

代码语言:javascript
运行
复制
"Customer doesn't understand how to use the product".

关键词:理解,知识,了解,意识。

记录:

代码语言:javascript
运行
复制
Training, Customer doesn't understand how to use the product

我在用谷歌预测API。在培训模型时,我会将以前的文本归类为:“客户不知道如何使用该产品”--培训。

如何添加关键字到免费的文本/培训数据,以帮助模型更好的表现,并提供一个更好的信心水平?

培训组的数据:

代码语言:javascript
运行
复制
Training, understand knowledge know aware
Training, Customer doesn't understand how to use the product

现在,我在相同的训练数据中添加关键字,但想找一个更好的建议。

EN

回答 1

Data Science用户

回答已采纳

发布于 2016-03-04 19:17:18

假设您正在进行监督学习,以训练一个模型,该模型在部署时将以文本作为输入并输出标签(例如,主题)或类概率,那么您可能要做的是平衡的,分层抽样。假设有足够的标签数据,确保最后的培训集对每个类/标签都有一个平衡的文本示例。根据您的情况,您可能需要超过/低于示例,或者以某种方式处理高度不平衡的类的问题(请参阅八种对抗不平衡阶级的策略)。

使用一袋袋话技术的最简单的NLP方法,简单地表示句子中一个单词的存在/缺失。因此,每个句子都被表示为长度n的向量,其中n=数据集中唯一单词的数目。

代码语言:javascript
运行
复制
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特性来提高性能。

代码语言:javascript
运行
复制
##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值)。

票数 4
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/10531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档