Skip to content

Instantly share code, notes, and snippets.

@pedrokoblitz
Last active December 22, 2015 05:19
Show Gist options
  • Save pedrokoblitz/6422867 to your computer and use it in GitHub Desktop.
Save pedrokoblitz/6422867 to your computer and use it in GitHub Desktop.
detalhes de estrutura de dados para processamento de linguagem
estado
tokenstore -> testes finais
processadores -> estagios iniciais
refazer extrator regexp da aranha
colecionar codigo para filas e daemon
daemon inicia aranhas e workers
sysctl gerencia workers
fila burocratica
- indexacao de projeto, busca, data, hora, etc
- indexacao de documento, frases e palavras
fila extracao
- extrator regexp & etc
- contextos, similaridade e tudo que depende de palavras alvos
- tags
fila classificadores
- pos_tag
- sentimento
- categorias
taggeador primario:
- extrair do html as tags do post
- extrair da url informacoes relevantes
olhar essas bibliotecas
https://github.com/commonsense/metanl
http://radimrehurek.com/gensim/index.html
http://mallet.cs.umass.edu/
http://nlp.lsi.upc.edu/freeling/index.php?option=com_content&task=view&id=13&Itemid=42
referencias
twitter
https://github.com/ChimeraCoder/anaconda
xmlpath
http://godoc.org/launchpad.net/xmlpath
regex
http://golang.org/pkg/regexp/
https://github.com/StefanSchroeder/Golang-Regex-Tutorial
modulos em go lang
- bot extrator de urls do twitter
- idem google news
- parser de xpath para html vindo do bash crawler
- parser de regex para extracao de emails, telefones, enderecos, ceps ...
- parser de regex/string para extracao de nomes de lugares, pessoas ...
single app dir struct
app/ <- classes base/abstratas
models/ <- modelos
models/formats/ <- mapas de resultado
validators/ <-todos os validadores do app
assets/ <- imgs, css, js
index.php <- bootstrap
opendata
parse RDF
http://stackoverflow.com/questions/14597122/parsing-large-ntriples-file-python
https://github.com/RDFLib
wikipedia data
http://wiki.dbpedia.org
cidades brasil
http://www.astrologie.com.br/coordenadas_do_brasil.htm
as frases devem ser contadas sim, isso deve ser refletiddo no modelo Sentences
adicionar tabelas
- token_occurence
- sentence_occurence
separação dos bancos
mysql
1 - tokenstore
2 - admin, similar, contexts, summaries, verbs, ngrams
3 - contacts, entities, geo, official documents
* rever todas as tabelas para garantir que essa estutura seja possível
- possivel query para reconhecer entidades: "SELECT * FROM tokens WHERE caps = 1 AND sort_order != 0;
- algoritmo para incluir minusculas como "da Silva"
* incluir document_ref na tabela documents para fazer ponte entre cache, log, relatorios e outros bancos.
* criar script para indexar a pontuação de dentro da tabela tokens
SELECT id FROM tokensIndex WHERE token IN (",", ".", ":", ";", "?", "/", "-", "_", "+", "=", "{", "}", "[", "]", "(", ")" "!", "?", "<", ">", "\"", "'", "\" , "|", "@", "#", "$", "%", "&", "*", "£", "¢", "§", "º", "ª", "°");
* criar funcao para colar os ids dos tokens para o documento sem separar por frases. fazer o mesmo para concatenar uma série de documentos e criar um corpus.
* estrutura relacional à parte para metadata
-> tags
* extraçao de dados comuns com REGEXP
usar https://github.com/VerbalExpressions/JSVerbalExpressions
-> endereços
^(RUA|Rua|R.|AVENIDA|Avenida|AV.|TRAVESSA|Travessa|TRAV.|Trav.) ([a-zA-Z_\s]+)[, ]+(\d+)\s?([-/\da-zDA-Z\\ ]+)?$
^(?<tipo>.{1,3})\s+(?<endereco>.+),\s+(?<numero>\w{1,10})\s*(?<complemento>.*)$
-> telefones
^(?:(?([0-9]{2}))?[-. ]?)?([0-9]{4})[-. ]?([0-9]{4})$
^\([1-9]{2}\)?([0-9]{8})$
-> emails (http://www.regular-expressions.info/email.html)
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$
-> datas (http://www.regular-expressions.info/dates.html)
^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$
^(?ni:(?=\d)((?'year'((1[6-9])|([2-9]\d))\d\d)(?'sep'[/.-])(?'month'0?[1-9]|1[012])\2(?'day'((?<!(\2((0?[2469])|11)\2))31)|(?<!\2(0?2)\2)(29|30)|((?<=((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00)\2\3\2)29)|((0?[1-9])|(1\d)|(2[0-8])))(?:(?=\x20\d)\x20|$))?((?<time>((0?[1-9]|1[012])(:[0-5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2}))?)$
* distribuição similar
- se der para indexar na tabela base, pode se tornar uma ferramenta poderosa para criar relações entre os documentos
* contextos
* sumario (incluir nota de relevância na tabela de frases)
====ORDEM DE PROCESSAMENTO====
-> tokenstore
-> pos_tagging
-> chunking
-> resumo
-> extracao de entidades e outros dados (tokenization, filtering && regexp)
-> similares*
-> contextos*
*dependem de alvos
====SOA====
js vizualizations
slimphp apps json web apis
python queues
python daemons
nltk processors
go-lang, r-lang processors
rabbitmq, mysql, mongodb
apps/geo
apps/admin
apps/verbs
apps/tokenstore
apps/nlp
apps/viz
apps/search
====mongo====
LOGS
CONFIG
rotas e params dos metodos
config dos bds
filtering
dictionaries
BUFFER
spider
preprocessing
CACHE
reports
====log====
entry
- level
- msg
- data/hora
- fonte/app
====seguranca====
duas chaves
chave acesso -> autoriza entrada
chave renovacao -> gera outro par
processamento de texto
1- regexp (golang)
https://github.com/moovweb/rubex OR https://github.com/StefanSchroeder/Golang-Regex-Tutorial
2 - tokenization
http://www.nltk.org/book/ch03.html
3 - tagging
http://www.nltk.org/book/ch05.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment