def get_words_from_2_sentS(f1, f2): #Tokens, Lowercase sem ascentos, remove pontuação f1 = word_tokenize(deburr(separator_case(f1, " "))) f2 = word_tokenize(deburr(separator_case(f2, " "))) #Remove números f1 = [ x for x in f1 if not (x.isdigit() or x[0] == '-' and x[1:].isdigit()) ] f2 = [ x for x in f2 if not (x.isdigit() or x[0] == '-' and x[1:].isdigit()) ] return f1, f2
def get_lemmas_from_2_sents(f1, f2): s1, s2 = "", "" #Retorna Lemmas for token in nlp(f1): s1 += "" if token.pos_ == "PUNCT" else token.lemma_ + " " for token in nlp(f2): s2 += "" if token.pos_ == "PUNCT" else token.lemma_ + " " #Tokens, Lowercase sem ascentos f1 = word_tokenize(deburr(s1.lower())) f2 = word_tokenize(deburr(s2.lower())) return f1, f2
def get_stems_from_sent(f1, f2): #Tokens, Lowercase sem ascentos, remove pontuação f1 = word_tokenize(deburr(separator_case(f1, " "))) #Remove números f1 = [ stemmer.stem(x) for x in f1 if not (x.isdigit() or x[0] == '-' and x[1:].isdigit()) ] return f1
def get_word_tag_from_2_sents(f1, f2): s1, s2 = [], [] #Retorna Lemmas nlp = spacy.load('pt_core_news_sm') for token in nlp(f1): s1 if (token.pos_ == "PUNCT" or token.pos_ == "SPACE" ) else s1.append(deburr(token.text.lower()) + "|" + token.tag_) for token in nlp(f2): s2 if (token.pos_ == "PUNCT" or token.pos_ == "SPACE" ) else s2.append(deburr(token.text.lower()) + "|" + token.tag_) nlp = spacy.load('en_core_web_sm') for token in nlp(f1): s1 if (token.pos_ == "PUNCT" or token.pos_ == "SPACE" ) else s1.append(deburr(token.text.lower()) + "|" + token.tag_) for token in nlp(f2): s2 if (token.pos_ == "PUNCT" or token.pos_ == "SPACE" ) else s2.append(deburr(token.text.lower()) + "|" + token.tag_) return s1, s2
def get_tagger_from_sent(f1): f1 = deburr(f1.lower()) s1 = [] #Retorna Lemmas for token in nlp(f1): s1 if (token.pos_ == "PUNCT" or token.pos_ == "SPACE") else s1.append(token.text + "|" + token.tag_) return s1
def get_word_pos_from_2_sents(f1, f2): doc = nlp(f1) dependencies = [] for token in doc: if (token.pos_ == "PUNCT" or token.pos_ == "SPACE"): continue word_pos = deburr(token.text.lower()) + " " + token.pos_ push(dependencies, word_pos) s1 = dependencies dependencies = [] doc = nlp(f2) for token in doc: if (token.pos_ == "PUNCT" or token.pos_ == "SPACE"): continue #print(token.text, token.pos_) word_pos = deburr(token.text.lower()) + " " + token.pos_ push(dependencies, word_pos) s2 = dependencies return s1, s2
def test_deburr(case, expected): assert _.deburr(case) == expected
def get_tokens_from_2_sents(f1, f2): #Tokens, Lowercase sem ascentos, remove pontuação f1 = word_tokenize(deburr(separator_case(f1, " "))) f2 = word_tokenize(deburr(separator_case(f2, " "))) return f1, f2
def get_sinonimos(palavra): # print("-------------") # print(palavra) palavra = deburr(kebab_case(palavra)) base_url = "https://www.sinonimos.com.br/" list_no_occur = get(nao_consta, "sinonimos") if has(sinonimos, palavra): #print("Palavra já consta no dicionário de sinônimos") return get(sinonimos, palavra) if palavra in list_no_occur: #print("Não foram encontrados sinônimos para a palavra") return [] else: #print("\nNova Palavra: ", palavra) request_fail = True while request_fail: try: site = requests.get(base_url + palavra) request_fail = False except Exception as e: print(e) pass data = BeautifulSoup(site.content, 'html.parser') try: h1 = data.find('h1').getText() except Exception as e: if palavra is not None: list_no_occur = push(list_no_occur, palavra) set_(nao_consta, "sinonimos", list_no_occur) save_json("nao_consta", nao_consta) return [] if (h1 == "Página Não Encontrada"): #print(h1) if palavra is not None: list_no_occur = push(list_no_occur, palavra) set_(nao_consta, "sinonimos", list_no_occur) save_json("nao_consta", nao_consta) return [] else: content = data.find('div', attrs={'id': 'content'}) try: div = content.findAll('div', attrs={'class': 's-wrapper'}) except Exception as e: print(e) if palavra is not None: list_no_occur = push(list_no_occur, palavra) set_(nao_consta, "sinonimos", list_no_occur) save_json("nao_consta", nao_consta) return [] aux = 0 for sentido in div: aux = aux + 1 lista_sinonimos = [] try: try: key = lower_case( sentido.find('div', attrs={ 'class': 'sentido' }).getText().strip(":")) except Exception as e: print(e) key = "sinonimos" + str(aux) pass values = sentido.findAll('a', attrs={'class': 'sinonimo'}, text=True) values2 = sentido.findAll('span') # print(values2) all_values = union(values, values2) #print(all_values) for value in all_values: lista_sinonimos.append(value.getText().strip(":")) set_(sinonimos, palavra + "." + key, lista_sinonimos) print("Sinônimo Salv@ no Dicionário") except Exception as e: print("\nError:\n" + str(e)) return [] save_json("sinonimos", sinonimos) return get(sinonimos, palavra)
def get_antonimos(palavra): # print("-------------") # print(palavra) palavra = deburr(kebab_case(palavra)) base_url = "https://www.antonimos.com.br/" list_no_occur = get(nao_consta, "antonimos") if has(antonimos, palavra): #print("Palavra já consta no dicionário de antônimos") return get(antonimos, palavra) if palavra in list_no_occur: #print("Não foram encontrados antônimos para a palavra") return [] else: request_fail = True while request_fail: try: site = requests.get(base_url + palavra) request_fail = False except Exception as e: print(e) pass data = BeautifulSoup(site.content, 'html.parser') try: h1 = data.find('h1').getText() except Exception as e: if palavra is not None: list_no_occur = push(list_no_occur, palavra) set_(nao_consta, "antonimos", list_no_occur) save_json("nao_consta", nao_consta) return [] if (h1 == "Página Não Encontrada"): #print(h1) if palavra is not None: list_no_occur = push(list_no_occur, palavra) set_(nao_consta, "antonimos", list_no_occur) save_json("nao_consta", nao_consta) return [] else: content = data.find('div', attrs={'id': 'content'}) try: div = content.findAll('div', attrs={'class': 's-wrapper'}) except Exception as e: print(e) if palavra is not None: list_no_occur = push(list_no_occur, palavra) set_(nao_consta, "antonimos", list_no_occur) save_json("nao_consta", nao_consta) aux = 0 for sentido in div: aux = aux + 1 lista_antonimos = [] try: try: key = lower_case( sentido.find('div', attrs={ 'class': 'sentido' }).getText().strip(":")) except Exception as e: key = lower_case( sentido.find('strong').getText().strip(".")) pass #print(sentido.find('p', attrs={'class':'antonimos'})) p = sentido.find('p', attrs={ 'class': 'antonimos' }).getText()[3:] try: p = str(p.encode('raw_unicode_escape').decode('utf-8')) except Exception as e: print(e) pass #print(p) #print(p.encode('utf-8')) all_values = p.split(',') #print(all_values) for value in all_values: lista_antonimos.append(value.strip(":").strip(' ')) set_(antonimos, palavra + "." + key, lista_antonimos) print("Antônimo Salv@ no Dicionário") except Exception as e: print("\nError:\n" + str(e)) return [] save_json("antonimos", antonimos) return get(antonimos, palavra)