如何从natural的LogisticRegressionClassifier获取训练用标签短语映射?
获取LogisticRegressionClassifier的标签与对应短语
嘿,我来帮你搞定这个需求!首先得跟你提个小细节:你想要的{"label1":"phrase1","label1":"phrase2",...}这种格式在JavaScript里是行不通的——对象的键必须唯一,后面的label1会直接覆盖前面的,所以咱们得换个合理的结构,比如用标签作为键,对应的值是该标签下所有短语组成的数组,也就是{"label1": ["phrase1", "phrase2"], "label2": ["phrase3"], "label3": ["phrase4"]},这才是合法且实用的格式。
接下来告诉你怎么从classifier实例里提取这些数据:natural库的LogisticRegressionClassifier实例里,你添加的所有文档其实都存在documents属性里,每个元素都是包含label(标签)和text(短语)的对象。我们只需要遍历这个数组,把相同标签的短语收集起来就行。
直接上代码示例:
const natural = require('natural'); const classifier = new natural.LogisticRegressionClassifier(); // 添加你的文档 classifier.addDocument('label1', 'phrase1'); classifier.addDocument('label1', 'phrase2'); classifier.addDocument('label2', 'phrase3'); classifier.addDocument('label3', 'phrase4'); // 构建标签到短语列表的映射 const labelPhrasesMap = {}; classifier.documents.forEach(item => { // 如果当前标签还没在映射里,先初始化一个空数组 if (!labelPhrasesMap[item.label]) { labelPhrasesMap[item.label] = []; } // 把短语添加到对应标签的数组里 labelPhrasesMap[item.label].push(item.text); }); console.log(labelPhrasesMap); // 输出结果: // { // label1: [ 'phrase1', 'phrase2' ], // label2: [ 'phrase3' ], // label3: [ 'phrase4' ] // }
不管你是在classifier.train()之前还是之后,都能访问classifier.documents拿到这些原始数据,完全不用担心训练会影响这个属性的内容。
内容的提问来源于stack exchange,提问作者user3310334
相关产品推荐
相关产品推荐

