Eu encontrei um requisito no meu trabalho para regular a entrada de vocabulário específico por seres humanos, provavelmente há mais de 100 vocabulários. Semelhante à seguinte situação (as palavras-chave são mais complicadas que os nomes de lugares)
Ele foi tratado com se, antes, o pseudo-código é o seguinte:
string TempStr;
if(TempStr.Contains("海淀") && TempStr.Contains("北京") )
{
return "北京市海淀区";
}
else if(TempStr.Contains("山东") && TempStr.Contains("威海") )
{
return "山东省威海市";
}
……//等等一共两百多个else,内容也比较复杂,甚至还有正则匹配之类的
else
{
return "匹配失败";
}
Como meu trabalho é escrever um plug-in do Excel, isso é mais do que cem, se afeta também a eficiência operacional, e também é muito inconveniente para manter e difícil adicionar vocabulário.
Nos últimos dois dias, encontrei algum conhecimento relevante e planejo otimizar esta parte.Uso o método tf-idf na PNL para calcular a similaridade da palavra-chave.
Todo o processo é basicamente: criando uma tabela de mapeamento de palavras-chave no banco de dados, lendo-a como um dicionário quando o plug-in é iniciado e calculando a similaridade e fazendo o upload para a tabela de mapeamento se a consulta não estiver disponível durante o uso.