我正在写一些东西,它需要一段文本并将其分解为可能的数据库查询,这些查询可用于查找类似的文本块。(类似于我输入时生成的“类似问题”列表)基本过程:
- 从文本中删除停用词
- 删除特殊字符
- 从剩余的文本中创建一系列独特的“词干”
- 创建一系列可能的茎数组组合(我被卡住了......有点)
这是我到目前为止所拥有的:
//baseList starts with an empty array
//candList starts with the array of unique stems
//target is where the arrays of unique combinations are stored
function createUniqueCombos(baseList,candList,target){
for(var i=0;i<candList.length;i++){
//copy the base List
var newList = baseList.slice(0);
//add the candidate list item to the base list copy
newList.push(candList[i]);
//add the new array to the target array
target.push(newList);
//re-call function using new array as baseList
//and remaining candidates as candList
var nextCandList = candList.slice(i + 1);
createUniqueCombos(newList,nextCandList,target);
}
}
这可行,但在大于 25 个字左右的文本块上,它会使我的浏览器崩溃。我意识到在数学上可能存在大量可能的组合。我想知道的是:
- 有没有更有效的方法来做到这一点?
- 如何定义最小/最大组合数组长度?