drug-ner / frontend /src /utils.js
baob2004's picture
Deploy Drug NER PhoBERT
b211dba
Raw
History Blame Contribute Delete
1.08 kB
export function cleanWord(word) {
if (!word) return "";
return String(word).replace(/[^\p{L}\p{N}\s,.\-/]/gu, "").replace(/\s+/g, " ").trim();
}
export function deduplicateEntities(items) {
if (!items || items.length === 0) return [];
const seen = new Map();
for (const item of items) {
const key = cleanWord(item.word).toLowerCase();
if (!key) continue;
if (!seen.has(key) || Number(item.score || 0) > Number(seen.get(key).score || 0)) {
seen.set(key, { ...item, word: cleanWord(item.word) });
}
}
return Array.from(seen.values());
}
export function processEntities(rawEntities) {
if (!rawEntities) return {};
const result = {};
for (const [type, items] of Object.entries(rawEntities)) {
result[type] = deduplicateEntities(items);
}
return result;
}
export function normalizeForCompare(value) {
return String(value || "").replace(/\s+/g, " ").trim().toLowerCase();
}
export function countEntities(entities = {}) {
return Object.values(entities).reduce((sum, arr) => sum + (Array.isArray(arr) ? arr.length : 0), 0);
}