텍스트 유사도 검사 기능 추가
This commit is contained in:
41
findSimilarString.js
Normal file
41
findSimilarString.js
Normal file
@@ -0,0 +1,41 @@
|
||||
const xpath = require("xpath");
|
||||
const { DOMParser } = require("xmldom");
|
||||
const stringSimilarity = require("string-similarity");
|
||||
|
||||
/**
|
||||
* XML 문서에서 유사한 문자열 찾기
|
||||
* @param {string} xmlDoc - XML 문자열
|
||||
* @param {string} targetString - 비교할 문자열
|
||||
* @param {number} threshold - 유사도 기준 (0~1)
|
||||
* @returns {string} - 유사한 문자열
|
||||
*/
|
||||
function findSimilarString(xmlDoc, targetString, threshold = 0.8) {
|
||||
// XML 내부의 비교 대상 텍스트 리스트 찾기
|
||||
function getTextNodes(xmlDoc, stringList = []) {
|
||||
const stringNodes = xpath.select("//CRCUnitArr/@Name", xmlDoc);
|
||||
stringNodes.forEach(stringNode => {
|
||||
console.log("🚀 ~ getTextNodes ~ stringNode:", stringNode.value);
|
||||
stringList.push(stringNode.value);
|
||||
});
|
||||
return stringList;
|
||||
}
|
||||
|
||||
// XML에서 모든 텍스트 추출
|
||||
const stringList = getTextNodes(xmlDoc);
|
||||
|
||||
// 유사도 비교하여 가장 유사한 문자열 찾기
|
||||
let bestMatch = null;
|
||||
let highestSimilarity = 0;
|
||||
|
||||
stringList.forEach(text => {
|
||||
const similarity = stringSimilarity.compareTwoStrings(targetString, text);
|
||||
if (similarity > highestSimilarity && similarity >= threshold) {
|
||||
highestSimilarity = similarity;
|
||||
bestMatch = text;
|
||||
}
|
||||
});
|
||||
|
||||
return bestMatch;
|
||||
}
|
||||
|
||||
module.exports = findSimilarString;
|
||||
Reference in New Issue
Block a user