Texto rápido em PHP \ Python. Primeiros passos

Porque porque




Por um longo tempo, vários tipos de algoritmos de aprendizado de máquina ganharam popularidade. Além disso, graças às grandes empresas que estão impulsionando o progresso tecnológico, muitos produtos de código aberto apareceram. Um deles é o Fasttext, que será discutido abaixo.

Texto rápido - desenvolvimento do Facebook. O principal objetivo do programa é a classificação do texto. A classificação do texto pode ser necessária para:

  1. combinando informações textuais em grupos de “similaridade” (notícias sobre um tópico)
  2. agrupando texto com tópicos semelhantes em um grupo (notícias sobre carros)
  3. procure informações que possam ser spam
  4. pesquisa clickbait
  5. ...

De fato, existem muitas opções e não faz sentido listar tudo; a ideia deve ser clara.

Primeiro treinamento


Na página da biblioteca, há uma instalação passo a passo e a primeira instrução de treinamento . Eu não vou insistir neles.

pães
Eles também têm modelos prontos em diferentes idiomas para classificação aqui.

Configuração da biblioteca


O problema do treinamento é a individualidade dos parâmetros. Não existem parâmetros que garantam excelentes resultados. Você pode encontrar na Internet uma tonelada de ( ou não ) artigos com exemplos de parâmetros e eles podem não ser adequados para você, pois resultarão em um resultado insatisfatório.

Somente empiricamente você pode escolher os parâmetros que mais lhe agradam. Abaixo está uma lista daqueles que afetam significativamente o resultado:

- dim - dimension controla o tamanho dos vetores ( manteiga ): quanto mais eles são, mais informações eles podem capturar, mas isso requer mais dados. Mas se houver muitos dados, o processo de treinamento será mais lento. O padrão é 100 medições. Comece com 150 e escolha o valor ideal para você.

- lr - velocidade de aprendizado. Se o parâmetro for muito pequeno, o modelo se tornará mais sensível ao texto e poderá não distinguir textos semelhantes, mas se o parâmetro for muito grande, pelo contrário, poderá "dizer" que os textos são semelhantes, embora, na realidade, não seja assim. Comece com 0,1 (padrão 0,05).

- época - número de épocas. Este é o número de passes de acordo com seus dados. Mais - melhor (mas, infelizmente, nem sempre). Isso aumenta o tempo de treinamento. Comece em 150 (o padrão é 5).

- modelo de aprendizagem . Leia a descrição do Facebook. Está bem claro.

- perda - como a comparação ocorrerá. Tudo aqui é muito individual e depende dos dados.

pequena digressão
É muito legal que, mesmo sem conhecimento suficiente na classificação de textos e mecanismos internos da rede neural, você possa obter um modelo muito funcional.

Preparação de texto


O texto de entrada também é importante. Quanto melhor o texto, melhores as informações do modelo. Regras básicas para a preparação de texto para treinamento:

  • excluir todas as tags
  • transmitir para minúsculas
  • remover caracteres de pontuação
  • remover tags hash, links
  • excluir palavras de interrupção
  • excluir palavras pequenas (1,2,3 caracteres. aqui todos decidem seus dados)

Alguns escrevem que você pode simplesmente inserir texto em um modelo e treinar. Esta opção não combina comigo. Estou inclinado a acreditar que, sem pré-processamento, é obtido um modelo de baixa qualidade.

Preparação de texto para classificação


As mesmas regras se aplicam aqui, mas a experiência mostrou que essas regras podem ser complementadas por lematização ou golpe. Com eles, os resultados podem ser significativamente aprimorados ( ou piorados ). Além disso, quando você já formou clusters, não esqueça que os algoritmos de cluster também devem ser aplicados a esses clusters, mas com muito cuidado, pois é possível recolher um tópico semelhante em um cluster. Isso é muito evidente no esporte: o modelo entende que as notícias são do futebol. Mas é muito difícil fazer o modelo distinguir o campeonato da Espanha do campeonato da Itália.

Linguagem de programação


mais que verdade
Como foi dito no Family Guy: "Sim, ninguém se importa "

Para treinar o modelo, você pode escolher o PHP (assumiu, uma vez que a maioria dos sites está escrito nele) e o Python (existe uma biblioteca para ele). Mas há um momento muito engraçado . Você ainda precisa treinar o modelo executando o texto rápido na linha de comando, se o tempo de treinamento for caro para você. Portanto, não importa em que escrever o código para treinamento (o que for conveniente, escreva sobre isso).

Quanto ao mecanismo de agrupamento, é um pouco mais complicado ( ou mais simples ). Se você gosta de bicicletas ( controle todos os processos e precisa de um mecanismo de controle flexível ), escreva em php (se o site estiver em php). Se você não deseja escrever bibliotecas e existe uma opção de linguagem, provavelmente é melhor usar o Python. Não notei uma diferença significativa na velocidade (na velocidade do código e não na velocidade de escrevê-lo). Depende de você.

Em vez de uma conclusão


Eu tenho um modelo que é construído exclusivamente com conteúdo de notícias nos últimos dias. O tamanho das palavras é de cerca de 40.000 . Você pode brincar com ela. Mas lembre-se de que:

  • Este não é um modelo universal. Ela treina apenas em conteúdo de notícias.
  • o modelo não contém todas as notícias do banco de dados, mas apenas um editorial (isso é suficiente para resolver a tarefa). Isso significa que o modelo pode fornecer uma porcentagem baixa em notícias semelhantes.

Source: https://habr.com/ru/post/pt469917/


All Articles