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

如何从已分词文档提取名词并筛选Top3?代码故障排查求助

问题分析与代码修正

你的代码存在几个关键问题,导致无法正常提取名词:

  • 重复创建分词文档:sT2已经是tokenizedDocument对象,无需再用tokenizedDocument(sT2)重新创建,这会导致后续处理异常。
  • 循环范围错误:size(td7)返回的是包含行数和列数的二维数组,直接用for ii = 1:siztd7会导致循环次数错误,应该取行数siztd7(1)。
  • Cell数组访问错误:td7是cell数组,需要用花括号{}访问内部元素,而不是圆括号(),否则strcmp比较的是cell对象而非字符串内容。
  • 提取目标行错误:保存名词时,你始终取tdetails(1,:)(第一行),应该取当前循环对应的tdetails(ii,:)。
  • 未初始化结果容器:tDNoun未提前初始化,直接赋值会引发维度不匹配的错误。

修正后的代码

% 初始化字符串数组并创建分词文档
strs = [
    "a strongly worded collection of words and letters"
    "another collection of words"];
tD = tokenizedDocument(strs);

% 添加词性标注
tD = addPartOfSpeechDetails(tD);

% 获取分词详情表
tdetails = tokenDetails(tD);

% 提取词性列(转为cell数组)
posCell = table2cell(tdetails(:, "PartOfSpeech"));

% 初始化存储名词的table
tDNoun = table();
cc = 1;

% 遍历所有分词,筛选名词
for ii = 1:size(posCell, 1)
    if strcmp(posCell{ii, 1}, 'noun')
        tDNoun(cc, :) = tdetails(ii, :);
        cc = cc + 1;
    end
end

% 创建词袋并提取前3个高频名词
bag = bagOfWords(tDNoun.Token);
top3Nouns = topkwords(bag, 3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:30:55