def test_fuzzy_match(self, text_pairs): thresholds = (0.5, 0.7, 0.9) for text1, text2 in text_pairs: sims = [ similarity.jaccard( text1.split(), text2.split(), fuzzy_match=True, match_threshold=threshold ) for threshold in thresholds ] assert sims[0] >= sims[1] >= sims[2]
def test_jaccard_exception(text1, text2): with pytest.raises(ValueError): _ = similarity.jaccard(text1, text2, True)
print('{} {} {}'.format(a, b, total)) else: hits_counter[a + '_' + b] += int(len(sentences)) #print('NOT {} {} {}'.format(a,b,len(sentences))) data.set_value(row[0], 'd_type', NAME) data.set_value(row[0], 'count', int(total)) except Exception as e: print(a, b, e) selected_sentences = [] for sentence in all_sentences: max_sim = 0 sentence_a = sentence['raw_text'] for sentence_b in selected_sentences: sim = jaccard(sentence_a, sentence_b['raw_text']) if sim > max_sim: max_sim = sim if max_sim < 0.9: selected_sentences.append(sentence) folder = '{}-{}'.format(time.strftime("%H-%M"), NAME) if not os.path.exists(folder): os.makedirs(folder) with open('{}/raw-sentences-{}.json'.format(folder, NAME), 'w') as f: try: json.dump( { 'meta': { 'marker': markers,
def test_match_threshold_error(self, text_pairs): text1, text2 = text_pairs[0] for mt in (-1.0, 1.01, 50): with pytest.raises(ValueError): _ = similarity.jaccard(text1, text2, match_threshold=mt)
def test_fuzzy_match_error(self, text_pairs): for text1, text2 in text_pairs: with pytest.raises(ValueError): _ = similarity.jaccard(text1, text2, True)
def test_obj_types(self, text_pairs): for text1, text2 in text_pairs: _ = similarity.jaccard(text1, text2) _ = similarity.jaccard(text1.split(), text2.split())
def extraccion_informacion(request): #o = u"Dr. José Barbosa, Rector Canciller UTPL, saluda a los estudiantes, docentes y administrativos por el Cuadragésimo Segundo Aniversario de fundación de la Universidad Técnica Particular de Loja." if request.method=="POST": text = request.POST['consulta'] consulta_form = text #consulta = u'''Dr. José Barbosa, Rector Canciller UTPL, saluda a los estudiantes, docentes y administrativos por el Cuadragésimo Segundo Aniversario de fundación de la Universidad Técnica Particular de Loja. ''' print(text) doc1 = nlp(text) # Listado de entidades reconocidas por la libreria lista_entidades = [] for ent in doc1.ents: # print ent.text, ent.lemma_, ent.pos_, ent.is_stop, ent.is_punct print(ent.text, ent.start_char, ent.end_char, ent.label_) lista_entidades.append([ent.text, ent.start_char, ent.end_char, ent.label_]) m_entidades = [] conjunto_matriz_triples = [] conjunto_matriz_triples2 = [] for entidad in lista_entidades: print("Tabla") print(lista_entidades) print('Entidad: {0} --> tipo: {1}'.format(entidad[0],entidad[3])) consulta = '''SELECT * WHERE{ ?uri rdfs:label ?label . ?uri foaf:name ?name . ?uri rdfs:comment ?comment . FILTER (?label = "%s"@es || ?label = "%s"@en || ?name="%s"@es || ?name="%s"@en) FILTER (lang(?label) = 'es') FILTER (lang(?comment) = 'es') } ''' % (str(entidad[0]),str(entidad[0]), str(entidad[0]), str(entidad[0])) print consulta sparql.setQuery(consulta) # definition sparql.setReturnFormat(JSON) results = sparql.query().convert() # print(results) conjunto_triples = [] conjunto_triples2 = [] for result in results["results"]["bindings"]: # print(result) # EJEMPLO: [u'http://www.wikidata.org/entity/Q332989', u'ciudad', u'Loja', u'Loja'] conjunto_triples.append([result["uri"]["value"], result["name"]["value"], result["label"]["value"], result["comment"]["value"],entidad[0]]) conjunto_triples2.append(result["uri"]["value"]) if results: m_entidades.append(entidad[0]) conjunto_matriz_triples.append(conjunto_triples) conjunto_matriz_triples2.append(conjunto_triples2) #lista.append([entidad[0], conjunto_matriz_triples]) print("Esta es la lista de datos") print(conjunto_matriz_triples) similitud = [] maxima_similitud = [] for entidad_triples in conjunto_matriz_triples: for triple in entidad_triples: print(triple) sim = jaccard(triple[1], text) print("Se compara: ") print(triple[1]+" -- " +text) print(sim) similitud.append([triple[0], triple[1], triple[2], sim]) if similitud: similitud = sorted(similitud, key=itemgetter(3), reverse=True) maxima_similitud.append(similitud[0]) else: maxima_similitud.append(None) similitud = [] print(maxima_similitud) entidades = maxima_similitud # html cont = 0 for entidad in lista_entidades: if entidades[cont] is not None: link = "<a href=" + entidades[cont][0] + ">" + lista_entidades[cont][0] + "</a>" mayor = lista_entidades[cont][2] menor = lista_entidades[cont][1] n = mayor - menor longuitud = len(link) - (n) # print(longuitud) text = text[:lista_entidades[cont][1]] + link + text[lista_entidades[cont][2]:] for triple in lista_entidades: triple[1] = triple[1] + longuitud triple[2] = triple[2] + longuitud cont = cont + 1 print(text) lista = zip(m_entidades, conjunto_matriz_triples2) return render(request, 'anotador.html', {'texto':text, 'listado':maxima_similitud, 'lista':lista, 'consulta':consulta_form}) listado = [] consulta_form = "La Universidad Técnica Particular de Loja es una institución educativa del sur del Ecuador" texto = "" lista = [] return render(request, 'anotador.html', {'texto':texto,'consulta':consulta_form,'listado':listado, 'lista':lista})
def overlap(row): headline = row['Headline'].split() body = row['articleBody'].split() if len(headline) == 0 and len(body) == 0: return 0 return jaccard(headline, body)
def test_jaccard_fuzzy_match_warning(text1, text2): thresh = 50 with pytest.warns(UserWarning): _ = similarity.jaccard(text1.split(), text2.split(), fuzzy_match=True, match_threshold=thresh)