2011-06-06 38 views
7

Quiero encontrar si dos páginas web son similares o no. ¿Puede alguien sugerir si Python nltk con funciones de similitud de wordnet es útil y cómo? ¿Cuál es la mejor función de similitud que se utilizará en este caso?usando python nltk para encontrar similitud entre dos páginas web?

+1

NLTK bien podría ser útil. Eche un vistazo al libro de O'Reilly (de código abierto): está publicado en nltk.org si no puede encontrar/adquirir la versión impresa. Esto debería apuntarle en la dirección correcta ya que cubre la mayor parte de lo que NLTK puede hacer. – winwaed

+0

[enlace al libro de Python 2 para mayor comodidad] (http://www.nltk.org/book_1ed/) - Actualmente están trabajando en una versión revisada para Python 3 y NLTK 3 – Ksofiac

+0

[enlace al libro de Python 3] (http: //www.nltk.org/book/) – Ksofiac

Respuesta

14

El documento mencionado por spotsigsjoyceschan direcciones de detección de la duplicación de contenido y contiene un montón de alimento para el pensamiento.

Si está buscando una comparación rápida de términos clave, las funciones estándar nltk pueden ser suficientes.

Con nltk se puede tirar sinónimos de los términos por buscar los synsets contenida por WordNet

>>> from nltk.corpus import wordnet 

>>> wordnet.synsets('donation') 
[Synset('contribution.n.02'), Synset('contribution.n.03')] 

>>> wordnet.synsets('donations') 
[Synset('contribution.n.02'), Synset('contribution.n.03')] 

Se entiende plurales y también le indica qué parte de la oración el sinónimo corresponde a

Synsets se almacenan en un árbol con términos más específicos en las hojas y más generales en la raíz. Los términos de la raíz se llaman hiperónimos

Se puede medir la similitud por lo cerca que los términos son a la hypernym común

Cuidado con diferentes partes del discurso, de acuerdo con el libro de cocina NLTK no lo hacen tener caminos superpuestos, por lo que no debes intentar medir la similitud entre ellos.

Say, tiene dos términos donación y regalo, se puede obtener de synsets pero en este ejemplo que les inicializado directamente:

>>> d = wordnet.synset('donation.n.01') 
>>> g = wordnet.synset('gift.n.01') 

El libro de cocina recomienda método de Wu-Palmer Similitud

>>> d.wup_similarity(g) 
0.93333333333333335 

Este enfoque le proporciona una forma rápida de determinar si los términos utilizados corresponden a conceptos relacionados. Eche un vistazo al Natural Language Processing with Python para ver qué más puede hacer para ayudar en el análisis del texto.

+0

gracias amigo que fue útil. Pero, usando esas cosas puedo encontrar similitud entre un par de palabras, pero ¿cómo hago eso para oraciones. – station

+1

¡Guau! ¡Esto es mejor que el sexo o el helado! –

+1

@ user567797 no hay problema Este documento describe el algoritmo para medir la similitud semántica entre dos oraciones. http://www.google.com/url?sa=t&source=web&cd=2&ved=0CCYQFjAB&url=http%3A%2F%2Fwordnetdotnet.googlecode.com% 2Fsvn% 2Ftrunk% 2FProjects% 2FThanh% 2FPaper% 2FWordNetDotNet_Semantic_Similarity.pdf & rct = j & q = similitud% 20sentences & ei = XEruTanSLcXegQetyeSVDw & usg = AFQjCNF9fWcVrWZ4_cBZcfW_p7fFxaL_1A & sig2 = qY7LW7YWGzNXMhOOPS5Llw & cad = rja –

1

considerar su implementación Spotsigs

Cuestiones relacionadas