Created
June 3, 2018 16:05
-
-
Save rudmanmrrod/facb2ace57f279167453b814d4b5b02a to your computer and use it in GitHub Desktop.
Sdk para determinar la concurrencias de un listado de palabras en un listado de publicaciones
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from nltk.corpus import stopwords | |
class DangerSdk(): | |
"""! | |
Sdk para determinar si un usuario es peligroso | |
@date 03-06-2018 | |
@version 1.0.0 | |
""" | |
def clean(self,word): | |
""" | |
Método para limpiar una palabra | |
@param self Objeto que instancia el método | |
@param word Palabra para ser limpiada | |
@return Retorna la palabra limpia | |
""" | |
clean_word = word.lower().replace(',','').replace(';','') | |
return clean_word | |
def remove_stopwords(self,posts): | |
""" | |
Método para remover las stopwords | |
@param self Objeto que instancia el método | |
@param posts Recibe el listado de posts | |
@return Retorna los post sin palabras innecesarias | |
""" | |
new_posts = [] | |
for post in posts: | |
new_post = [] | |
words = post.split(" ") | |
for word in words: | |
if(word not in stopwords.words('spanish')): | |
new_post.append(self.clean(word)) | |
new_posts.append(" ".join(new_post)) | |
return new_posts | |
def danger_percent(self,posts,danger_list): | |
""" | |
Método para limpiar una palabra | |
@param self Objeto que instancia el método | |
@param posts Recibe el listado de posts | |
@param danger_list Recibe el listado de palabras de peligro | |
@return Retorna el porcentaje de peligro | |
""" | |
danger_dict = {} | |
word_q = 0 | |
danger_q = 0 | |
for danger in danger_list: | |
danger_dict[danger] = 0 | |
for post in posts: | |
words = post.split(" ") | |
word_q += len(words) | |
for word in words: | |
for danger_word in danger_list: | |
if word.find(danger_word)!=-1: | |
danger_dict[danger_word] += 1 | |
danger_q += 1 | |
d_percent = (danger_q/float(word_q))*100 | |
return {'danger_percent':d_percent,'words_dict':danger_dict} | |
posts = ["Realizar una aplicacion tanto web como movil que permita dar una prediccion de corto alcance del valor del Bitcoin", | |
"Realizar algoritmos de analisis de sentimiento para determinar la polaridad de las opiniones y noticias sobre el bitcoin", | |
"Se pretende realizar un sistema web en python desarrollado con Django que permita integrar algoritmos de aprendizaje automatico para la prediccion de la criptomoneda en un plazo no mayor a una semana y cuyos resultados se puedan observar facilmente via graficos, tambien se implementaran algoritmos de analisis de sentimientos, dirigidos a cuentas de twitter y paginas de noticias sobre el tema de bitcoins relevantes con el fin de obtener un matiz de opinion positivo o negativo que permitiria identificar posibles bajas o altas en el valor de la criptomoneda. Tambien se desarrollara una app movil conectada via servicios rest con el sistema, pensada en tener las funcionalidades del sistema web en dispositivos android."] | |
words = ["bitcoin","analisis","realizar","criptomoneda","bajas","obtener","movil","web", | |
"tambien","algoritmo","sistema"] | |
ds = DangerSdk() | |
cleaned_posts = ds.remove_stopwords(posts) | |
print(ds.danger_percent(cleaned_posts,words)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment