Skip to content

Commit

Permalink
Update 03_classificar_novo_texto.md
Browse files Browse the repository at this point in the history
  • Loading branch information
luizanisio authored Aug 26, 2018
1 parent 4b00245 commit 3d0d178
Showing 1 changed file with 45 additions and 1 deletion.
46 changes: 45 additions & 1 deletion 03_classificar_novo_texto.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,53 @@ Os algoritmos são simples e estão baseados no artigo de Saskia Vola em https:/

### Python

O arquivo <b>exemplo_classificador.py</b> demonstra uma classe base para uso do elasticsearch em python, incluindo o método <b>classificar</b>
O arquivo <b>exemplo_classificador.py</b> demonstra uma classe base para uso do elasticsearch (<b>Elastic</b>) em python, incluindo o método <b>classificar</b>
- os parâmetros são a query do elastic e o campo usado para classificação.
- o exemplo é a implementação direta da proposta de Saskia Vola e demonstrou um ótimo resultado em alguns contextos.
- um size muito grande pode atrapalhar, já que pode retornar vários resultados com scores baixos de uma classe que somados resultarão em um score maior para a pior classe.

```py
elastic = Elastic('http://localhost:9200', 'meustextos', 'textos', '', '')
print('### Retorno da classificação do texto')
textoNovo="isso é muito legal, adoro esse texto"
campo='Classificacao'
campoTexto='Texto_Shingle'
query= { "size" : 7,
"_source": [campo],
"query": {
"function_score": {
"query": {
"more_like_this": {
"fields": [campoTexto],
"like": textoNovo,
"min_term_freq": 1,
"min_doc_freq": 1,
"max_query_terms": 3
}
},
"functions": [
{ "field_value_factor": {
"field": "Votos",
"factor": 2,
"modifier": "sqrt",
"missing": 1
}
}
],
"max_boost": 2,
"boost_mode": "multiply",
"min_score" : 0.7
} } }

scores = elastic.classificar(query=query,campo_classe='Classificacao')
print('Classes e scores',scores)
```

Abaixo segue o resultado usando as frases de exemplo, sem pretensão de acertar, pois não há exemplos suficientes para uma boa classificação. Com isso a frase <b>"isso é muito legal, adoro esse texto"</b> receberia a classificação de <b>Alegria</b>. Caso o usuário alterasse a classificação, e esse texto fosse inserido no elastic, o algoritmo iria <b>"aprender"</b> essa nova classificação.
```
### Retorno da classificação do texto
Classes e scores [('Alegria', 6.864011959999999), ('Amor', 2.0344672), ('Tristeza', 1.6214796), ('Raiva', 1.2806222), ('Amizade', 1.0230638)]
```

Em breve será incluído um exemplo usando flask para responder requisições do angular na classificação contínua em um fluxo simples de trabalho.
1. Pesquisar textos
Expand Down

0 comments on commit 3d0d178

Please sign in to comment.