1
1
mirror of https://github.com/leon-ai/leon.git synced 2024-12-20 23:31:30 +03:00
leon/scripts/train/train-main-model/train-global-entities.js
2022-09-03 19:12:41 +08:00

50 lines
1.3 KiB
JavaScript

import path from 'path'
import fs from 'fs'
import log from '@/helpers/log'
/**
* Train global entities
* Add global entities annotations (@...)
*/
export default (lang, nlp) =>
new Promise((resolve) => {
log.title('Global entities training')
const globalEntitiesPath = path.join(
process.cwd(),
'core/data',
lang,
'global-entities'
)
const globalEntityFiles = fs.readdirSync(globalEntitiesPath)
const newEntitiesObj = {}
for (let i = 0; i < globalEntityFiles.length; i += 1) {
const globalEntityFileName = globalEntityFiles[i]
const [entityName] = globalEntityFileName.split('.')
const globalEntityPath = path.join(
globalEntitiesPath,
globalEntityFileName
)
const { options } = JSON.parse(fs.readFileSync(globalEntityPath, 'utf8'))
const optionKeys = Object.keys(options)
const optionsObj = {}
log.info(`[${lang}] Adding "${entityName}" global entity...`)
optionKeys.forEach((optionKey) => {
const { synonyms } = options[optionKey]
optionsObj[optionKey] = synonyms
})
newEntitiesObj[entityName] = { options: optionsObj }
log.success(`[${lang}] "${entityName}" global entity added`)
}
nlp.addEntities(newEntitiesObj, lang)
resolve()
})