Nlp 快速同义词';Matlab中的计算

Nlp 快速同义词';Matlab中的计算,nlp,matlab,matlab-deployment,matlab-compiler,Nlp,Matlab,Matlab Deployment,Matlab Compiler,好的,我现在有Matlab中的代码,它在不到一秒钟的时间内计算同义词 clc clear all close all warning off text = 'good'; Doc = actxserver('Word.Application'); X = invoke(Doc,'SynonymInfo',text); Synonyms = get(X,'MeaningList'); 但现在的问题是,它只计算一个单词。如何在阵列中使用它?就像我有一大堆单词一样?请引导 非常感谢您可以在单元格数

好的,我现在有Matlab中的代码,它在不到一秒钟的时间内计算同义词

clc
clear all
close all
warning off
text = 'good';

Doc = actxserver('Word.Application');
X = invoke(Doc,'SynonymInfo',text);
Synonyms = get(X,'MeaningList');
但现在的问题是,它只计算一个单词。如何在阵列中使用它?就像我有一大堆单词一样?请引导

非常感谢

您可以在单元格数组中使用和组织单词:

words = {'good', 'bad', 'apple'};

Doc = actxserver('Word.Application');
X = cellfun(@(word) invoke(Doc,'SynonymInfo',word), words, 'UniformOutput', false);
Synonyms = cellfun(@(X) get(X,'MeaningList'), X, 'UniformOutput', false);

现在您可以访问同义词{3},例如检索“apple”的同义词。

谢谢@Rafael,它正在工作,但是如果我使用循环,比如:for I=1:length(words)Doc=actxserver('Word.Application');X=cellfun(@(word)调用(Doc,'SynonymInfo',word),word(i),'UniformOutput',false);同义词=cellfun(@(X)get(X,'MeaningList'),X,'UniformOutput',false);结束它只找到第三个的同义词。。因为单词是三个,但我想在这个循环中找到所有三个单词的同义词,请指导!不,你误解了。您只需调用我建议的代码一次,而不是在循环中。然后您可以这样做来检索所有同义词:
fori=1:length(words),disp(同义词{i});结束
或在Matlab上键入同义词{:}查看所有结果。是的,完成了!非常感谢:)当然。只需在代码下方添加这一行:
同义词=cellfun(@(X)X(1:min(2,numel(X))),同义词'UniformOutput',false)
min(2,…)
参数规定了允许的最大字数。您可以将其更改为您想要的任何值。Sute,只需添加此行,您的同义词单元格数组将包含单词作为第一个条目:
Synonyms=cellfun(@(X)[words{X};Synonyms{X}]、num2单元格(1:numel(words))、'UniformOutput',false)