使用javascript中的妥协库将句子复数/单数化

时间:2018-12-03 15:53:06

标签: javascript nlp pluralize

我正在尝试使用compromise库来对采用以下形式的句子进行复数/单数化:

const str1 = "10 dog";
const str2 = "a man and 3 cat";
const str3 = "a bear";

如果我从折衷的角度使用pluralize方法,它将返回复数名词或动词的列表,但是我试图弄清楚如何使它对整个字符串进行复数。

const nlp = require("compromise");
const doc = nlp(str2);
const finalStr = doc.nouns().toPlural().out("normal"); // "man cats" instead of "a man and 3 cats";

1 个答案:

答案 0 :(得分:3)

这将起作用,因为它将首先识别所有名词:

doc.match("#Noun").nouns().toPlural().out("normal");

编辑

我知道问题出在哪里。看下面两个控制台日志:

const nlp = require("compromise")
let doc = nlp("a man and 3 cat")
doc.match("#Noun").nouns().toPlural()
console.log(doc.out("normal")) // "a man and 3 cats"

let doc2 = doc.match("#Noun").nouns().toPlural()
console.log(doc2.out("normal")) // "man cats"

请注意,在第二个示例中,我将其保存到新变量中。所以我想.match("#Noun")并不是必须的,而且您第一次就对了-只是不要将其保存到finalStr中。