You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求用于评论Intent Detection(Text Analysis)的R代码及相关线索

R实现评论意图检测的思路与代码示例

核心思路

意图检测本质是文本分类任务,核心流程就是:文本预处理→特征提取→模型训练与预测。如果没有标注好的训练数据,也可以先通过主题建模做初步聚类,再手动标注后训练模型。

实操方案

1. 文本预处理(用tidytext、dplyr)

先把原始评论清理干净,去掉没用的停用词、标点,做词干化:

library(tidytext)
library(dplyr)
library(tm)

# 模拟评论数据
reviews <- tibble(
  text = c("这个APP加载太慢了,能不能优化?", "我想退款,找不到入口", "界面设计得很美观,用着舒服")
)

# 预处理流程
clean_reviews <- reviews %>%
  unnest_tokens(word, text) %>%
  anti_join(stop_words) %>% # 移除英文停用词,处理中文需替换自定义中文停用词表
  mutate(word = stemDocument(word)) # 词干化

# 转成文档-词矩阵(传统模型需要的格式)
dtm <- clean_reviews %>%
  count(doc = row_number(), word) %>%
  cast_dtm(doc, word, n)

注:处理中文评论建议用jiebaR做分词,替代unnest_tokens,同时加载中文停用词表

2. 传统机器学习模型(用caret)

用朴素贝叶斯或随机森林做分类,前提是你已经标注好意图标签(比如“性能抱怨”“退款请求”“正面评价”):

library(caret)

# 假设已标注好的意图标签
labels <- factor(c("性能抱怨", "退款请求", "正面评价"))

# 划分训练/测试集
set.seed(123)
train_index <- createDataPartition(labels, p = 0.7, list = FALSE)
train_dtm <- dtm[train_index,]
train_labels <- labels[train_index]
test_dtm <- dtm[-train_index,]
test_labels <- labels[-train_index]

# 训练朴素贝叶斯模型
nb_model <- train(x = as.matrix(train_dtm), y = train_labels, method = "nb")

# 预测并评估效果
predictions <- predict(nb_model, newdata = as.matrix(test_dtm))
confusionMatrix(predictions, test_labels)

3. 深度学习方案(用keras)

如果评论数据量足够大,用LSTM这类深度学习模型效果会更好:

library(keras)

# 文本转序列格式
tokenizer <- text_tokenizer(num_words = 1000) %>%
  fit_text_tokenizer(reviews$text)
sequences <- texts_to_sequences(tokenizer, reviews$text)
padded_sequences <- pad_sequences(sequences, maxlen = 50) # 统一序列长度

# 标签转独热编码
label_matrix <- to_categorical(as.integer(labels)-1)

# 构建LSTM模型
model <- keras_model_sequential() %>%
  layer_embedding(input_dim = 1000, output_dim = 128, input_length = 50) %>%
  layer_lstm(units = 64) %>%
  layer_dense(units = 3, activation = "softmax")

model %>% compile(
  loss = "categorical_crossentropy",
  optimizer = "adam",
  metrics = "accuracy"
)

# 训练模型
model %>% fit(padded_sequences, label_matrix, epochs = 10, validation_split = 0.2)

额外小贴士

  • 无标注数据时,先用LDA主题建模(用topicmodels包)聚类,再给聚类结果手动标注意图,快速生成训练数据
  • 处理大规模评论时,用text2vec包替代tm,特征提取效率更高

内容的提问来源于stack exchange,提问作者Abby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:48:21