我正在尝试使用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";
答案 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
中。