Capturar apenas conteúdos de palavras classificadas como 'improprias' [RESOLVIDO]

1. Capturar apenas conteúdos de palavras classificadas como 'improprias' [RESOLVIDO]

Kelvin Ferraz
kelvinferraz

(usa Debian)

Enviado em 18/11/2016 - 23:59h

Boa Noite,

Vou tentar resumir de uma forma simples ( sei que minha dúvida não é tão difícil, mas o contexto deve ser explicado para melhor entendimento)

Estou utilizando o programa Weka, que é uma ferramenta de classificação de texto, realizei alguns testes em um conteúdo que tenho ele gerou o seguinte resultado:

considerando apenas a linha que começa com o mean, a palavra que gostaria de passar para outro arquivo e classificá-lo como próprio ou impróprio.

Attribute              propria impropria
(0.46) (0.54)
=========================================
youtube
mean 0.2351 0
std. dev. 0.7714 0.0266
weight sum 304 355
precision 0.1595 0.1595

youre
mean 0.1324 0.0182
std. dev. 0.399 0.1297
weight sum 304 355
precision 0.0688 0.0688

your
mean 0.2792 0.168
std. dev. 0.364 0.3164
weight sum 304 355
precision 0.0129 0.0129

young
mean 0.0448 0.1876
std. dev. 0.1772 0.3503
weight sum 304 355
precision 0.0151 0.0151

you
mean 0.2346 0.1527
std. dev. 0.2855 0.2528
weight sum 304 355
precision 0.0071 0.0071



Gostaria de saber se é possível, tanto com sed,awk, er ou mesmo outra linguagem se consigo capturar apenas os conteúdos classificados como impróprios como por exemplo acima:
O conteúdo you possui uma numeração de 0.2346 que é maior que 0.1527, sendo assim gostaria de pegar a palavra you e coloca lá em outro arquivo > conteudoproprios.txt.
Isso é possível ?

Att.

Kelvin Ferraz


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 21/11/2016 - 00:04h

kelvinferraz escreveu:

Deu certo!!!

Muito show. só uma coisa acabei esquecendo de mencionar, eu gostaria de fazer isso no arquivo que é gerado pelo programa weka, que seria a saida, ele tem um topo nessa forma:

=== Run information ===

Scheme:weka.classifiers.bayes.NaiveBayes
Relation: conteudoimproprios-weka.filters.unsupervised.attribute.StringToWordVector-R2-W1000-prune-rate-1.0-T-I-N1-S-stemmerweka.core.stemmers.NullStemmer-M1-O-stopwords/home/ferraz/GetContentWithStemmer/app/data/stopwords.txt-tokenizerweka.core.tokenizers.WordTokenizer -delimiters " \r\n\t.,;:\'\"()?!"-weka.filters.unsupervised.attribute.Remove-R108,144,256-257,364,428,442,474,496,525,550,588,614,662,685,822,839,881-882,968,1046,1090,1103,1109,1114-1117-weka.filters.unsupervised.attribute.Reorder-Rlast-first-weka.filters.unsupervised.attribute.Remove-R2
Instances: 104
Attributes: 1088
[list of attributes omitted]
Test mode:split 66.0% train, remainder test

=== Classifier model (full training set) ===

Naive Bayes Classifier

Class
Attribute propria impropria
(0.49) (0.51)
====================================================
zona
mean 0.1147 0.0652
std. dev. 0.3544 0.3305
weight sum 51 53
precision 0.266 0.266


Como faço para pular e ignorar todo esse topo até realmente chegar na parte propriamente dita?

====================================================================================
Boa noite Kelvin.
Para "pular esse topo", é só trocar o comando sed . . . .
Já que o "sed" limpa o arquivo, simplifiquei o awk...

sed '/^===/,/^=\+$/d' Saida_do_Weka >> texto.txt
awk 'BEGIN{FS="\n";RS="\n\n"} {print $1,$2}' texto.txt |awk '$3<$4 {print $1}' >> TEXTO_IMPROPRIO.txt


Se preferir, pode fazer direto, sem gerar o arquivo "texto.txt"
sed '/^===/,/^=\+$/d' Saida_do_Weka|awk 'BEGIN{FS="\n";RS="\n\n"} {print $1,$2}'|awk '$3<$4 {print $1}' >> TEXTO_IMPROPRIO.txt 

É isso...

E não esqueça:
Se a minha RESPOSTA te AJUDOU . . .
Me ajude, marcando a como A MELHOR . .
.

att.:
Marcelo Oliver


3. Re: Capturar apenas conteúdos de palavras classificadas como 'improprias' [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/11/2016 - 20:15h

kelvinferraz escreveu:

Boa Noite,

Vou tentar resumir de uma forma simples ( sei que minha dúvida não é tão difícil, mas o contexto deve ser explicado para melhor entendimento)

Estou utilizando o programa Weka, que é uma ferramenta de classificação de texto, realizei alguns testes em um conteúdo que tenho ele gerou o seguinte resultado:

considerando apenas a linha que começa com o mean, a palavra que gostaria de passar para outro arquivo e classificá-lo como próprio ou impróprio.

Attribute              propria impropria
(0.46) (0.54)
=========================================
youtube
mean 0.2351 0
std. dev. 0.7714 0.0266
weight sum 304 355
precision 0.1595 0.1595

youre
mean 0.1324 0.0182
std. dev. 0.399 0.1297
weight sum 304 355
precision 0.0688 0.0688

your
mean 0.2792 0.168
std. dev. 0.364 0.3164
weight sum 304 355
precision 0.0129 0.0129

young
mean 0.0448 0.1876
std. dev. 0.1772 0.3503
weight sum 304 355
precision 0.0151 0.0151

you
mean 0.2346 0.1527
std. dev. 0.2855 0.2528
weight sum 304 355
precision 0.0071 0.0071



Gostaria de saber se é possível, tanto com sed,awk, ER, ou mesmo outra linguagem
se consigo capturar apenas os conteúdos classificados como impróprios como por exemplo acima:
O conteúdo you possui uma numeração de 0.2346 que é maior que 0.1527, sendo assim gostaria de pegar a palavra you e coloca lá em outro arquivo > conteudoproprios.txt.
Isso é possível ?

Att.
Kelvin Ferraz

---------------------------
Kevin, boa noite.
Considerando a LINHA "mean" (média), se "PRÓPRIA" for maior que "IMPRÓPRIA",
Colocar a "PALAVRA" (linha acima de mean), no arquivo conteudoproprios.txt, é isso?

No caso, youtube, youre, your e you
São "palavras PRÓPRIAS"
É
young, é "IMPRÓPRIA".

Caso positivo, tenho a solução.
Aguardo sua resposta.

Att.:
Marcelo Oliver



4. Re: Capturar apenas conteúdos de palavras classificadas como 'improprias' [RESOLVIDO]

Kelvin Ferraz
kelvinferraz

(usa Debian)

Enviado em 19/11/2016 - 20:23h

Boa noite! :)

Então é exatamente isso, porém eu acabei colocando errado, tenho mais interesse na coluna impróprios, mas acredito que seja a mesma ideia de raciocínio. Só que utilizando as palavradas classificadas como impróprios.

Muito Obrigado, você sempre disposto ajudar aqui haha

Tks!


5. Re: Capturar apenas conteúdos de palavras classificadas como 'improprias'

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/11/2016 - 21:25h

kelvinferraz escreveu:

Boa noite! :)

Então é exatamente isso, porém eu acabei colocando errado, tenho mais interesse na coluna impróprios, mas acredito que seja a mesma ideia de raciocínio.
Só que utilizando as palavradas classificadas como impróprios.

Muito Obrigado, você sempre disposto ajudar aqui haha

Tks!

--------------------------------
kelvinferraz, boa noite.
Vamos lá . . .

1 º Passo:
sed -i '/^=\+/s/$/\n/' texto.txt # É PARA SEPARAR O CABEÇALHO.

2º Passo
awk 'BEGIN{FS="\n";RS="\n\n"} $2 ~ /mean/ {print $1,$2}' texto.txt|awk '$3<$4 {print $1}' >> TEXTO_IMPROPRIO.txt

Explicando:
O 1º awk, "trata" cada "bloco" como um registro e "pega" os campos "01 e 02", ficando assim:

awk 'BEGIN{FS="\n";RS="\n\n"} $2 ~ /mean/ {print $1,$2}' texto.txt               
youtube mean 0.2351 0
youre mean 0.1324 0.0182
your mean 0.2792 0.168
young mean 0.0448 0.1876
you mean 0.2346 0.1527


No 2º awk, verifico se o CAMPO 03 < que o CAMPO 04, e imprimo o campo 01 . . .
Bem simples . . . :)

cat TEXTO_IMPROPRIO.txt
young

Se a minha RESPOSTA te AJUDOU . . .
Me ajude, marcando a como A MELHOR . . .


Qquer duvida, é só perguntar . . . .

Abç.:
Marcelo Oliver




6. Re: Capturar apenas conteúdos de palavras classificadas como 'improprias' [RESOLVIDO]

Kelvin Ferraz
kelvinferraz

(usa Debian)

Enviado em 20/11/2016 - 22:54h

Deu certo!!!

Muito show. só uma coisa acabei esquecendo de mencionar, eu gostaria de fazer isso no arquivo que é gerado pelo programa weka, que seria a saida, ele tem um topo nessa forma:

=== Run information ===

Scheme:weka.classifiers.bayes.NaiveBayes
Relation: conteudoimproprios-weka.filters.unsupervised.attribute.StringToWordVector-R2-W1000-prune-rate-1.0-T-I-N1-S-stemmerweka.core.stemmers.NullStemmer-M1-O-stopwords/home/ferraz/GetContentWithStemmer/app/data/stopwords.txt-tokenizerweka.core.tokenizers.WordTokenizer -delimiters " \r\n\t.,;:\'\"()?!"-weka.filters.unsupervised.attribute.Remove-R108,144,256-257,364,428,442,474,496,525,550,588,614,662,685,822,839,881-882,968,1046,1090,1103,1109,1114-1117-weka.filters.unsupervised.attribute.Reorder-Rlast-first-weka.filters.unsupervised.attribute.Remove-R2
Instances: 104
Attributes: 1088
[list of attributes omitted]
Test mode:split 66.0% train, remainder test

=== Classifier model (full training set) ===

Naive Bayes Classifier

Class
Attribute propria impropria
(0.49) (0.51)
====================================================
zona
mean 0.1147 0.0652
std. dev. 0.3544 0.3305
weight sum 51 53
precision 0.266 0.266


Como faço para pular e ignorar todo esse topo até realmente chegar na parte propriamente dita?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts