Estou tentando agrupar, por exemplo, strings sobre programação com outras strings sobre programação, strings sobre física com outras strings sobre física, etc., para uma ampla gama de tópicos. Apesar do aspecto linguístico teórico gritante do problema, estou procurando fazer isso usando programação / software.
Resumo: Dado um grande número de strings, como eu os agruparia por tema semântico?
A aplicação específica: tenho ~ 200.000 perguntas triviais que gostaria de categorizar em grupos comuns (carros, computadores, política, Canadá, comida, Barack Obama, etc.).
O que eu procurei: A Wikipedia tem uma lista de kits de ferramentas de processamento de linguagem natural (supondo que o que estou tentando fazer seja realmente chamado de PNL), então observei alguns, mas nenhum parece fazer algo semelhante às minhas necessidades.
Notas: Foi salientado que isso requer conhecimento adicional (por exemplo, um Porsche sendo um carro, C ++ sendo uma linguagem de programação). Suponho que sejam necessários dados de treinamento, mas se eu tiver apenas a lista de perguntas e respostas, como posso gerar dados de treinamento? E então, como uso os dados de treinamento?
Mais notas: Se a formatação atual das minhas perguntas e respostas (embora pareça com JSON, é basicamente um arquivo de texto bruto):
// row 1: is metadata
// row 2: is a very specific kind of "category"
// row 3: is the question
// row 4: is the answer
{
15343
A MUSICAL PASTICHE
Of classical music's "three B's", he was the one born in Hamburg in 1833
Johannes Brahms
}
Mas antes que alguém aponte que já existe uma categoria, observe que existem ~ 200 mil perguntas e respostas como essa e basicamente tantas "categorias". Estou tentando agrupá-los em grupos mais amplos, como os listados acima. Além disso, essa formatação pode ser alterada para todas as perguntas com muita facilidade, faço-o programaticamente.
E mais notas: na verdade, não sei quantas categorias vou precisar (pelo menos 10 a 20), porque eu mesmo não li todas as perguntas. Eu estava parcialmente esperando ter o número finito determinado de alguma forma durante a categorização. De qualquer forma, sempre posso criar manualmente várias categorias.