2011-09-25 14 views
6

Me gustaría tener una palabra (por ejemplo, "Apple") y procesar un texto (o tal vez más). Me gustaría encontrar términos relacionados. Por ejemplo, procesar un documento para Apple y encuentran que el iPod, iPhone, Mac son términos relacionados con "Apple".Algoritmo para encontrar palabras relacionadas en un texto

Alguna idea sobre cómo resolver esto?

+0

mira esto: http://semantic-link.com/ –

Respuesta

9

Como punto de partida: su pregunta se relaciona con text mining.

Existen dos formas: una aproximación estadística y una forma de procesamiento de lenguaje natural (nlp).

no sé mucho acerca de la PNL, pero se puede decir algo sobre el enfoque estadístico:

  1. Es necesario alguna representación espacio vectorial de los documentos, ver http://en.wikipedia.org/wiki/Vector_space_model http://en.wikipedia.org/wiki/Document-term_matrix http://en.wikipedia.org/wiki/Tf%E2%80%93idf

  2. Para aprender semántica, es decir: diferentes palabras significan lo mismo, o una palabra puede tener diferentes significados, se necesita un gran corpus de texto para aprender. Como dije, este es un enfoque estadístico, por lo que necesita muchas muestras. http://www.daviddlewis.com/resources/testcollections/

    Tal vez tenga muchos documentos del contexto que va a utilizar. Esa es la mejor situación.

  3. Tienes que recuperar los factores latentes de este corpus.Las más comunes son:

    Estos métodos implican mucha mates. O lo cavas, o tienes que encontrar buenas bibliotecas.

puedo recomendar los siguientes libros:

+0

Para dummies como yo, construimos una gran matriz de co-ocurrencia. Esto nos dice que las palabras ocurren juntas y en realidad es bastante decente. Si son sinónimos y ese tipo de cosas ... eso es AI y realmente no existe, aunque Hoifung Poon en UW ha hecho una investigación cuidadosa sobre esto (análisis semántico no supervisado). – nflacco

2

Como todos los AI, es un problema muy difícil. Usted debe mirar en natural language processing para aprender sobre algunos de los problemas.

Un enfoque muy, muy simplista puede ser construir una tabla de dos palabras, para cada par de palabras la distancia promedio (en wo rds) que aparecen en el texto. Obviamente, necesitará limitar la distancia máxima considerada, y posiblemente también la cantidad de palabras. Luego, después de procesar una gran cantidad de texto, tendrá un indicador de la frecuencia con la que aparecen ciertas palabras en el mismo contexto.

2

Lo que haría es obtener todas las palabras en un texto y hacer una lista de frecuencias (con qué frecuencia aparece cada palabra). Tal vez también le agregue un factor heurístico sobre cuán lejos está la palabra de "Apple". Luego lea varios documentos y tache palabras que no son comunes en todos los documentos. Luego, priorice según la frecuencia y la distancia desde la palabra clave. Por supuesto, obtendrá una gran cantidad de basura y posiblemente omita algunas palabras relevantes, pero al ajustar la heurística debe obtener al menos algunas coincidencias decentes.

+0

a pensar más en ello, también debe incluir algunos textos que no están relacionados con "Apple" y excluir las palabras que aparecen en esos textos. Esto eliminará palabras comunes como "the", "of", etc. – Radu

1

La técnica que está buscando se llama Latent Semantic Analysis (LSA). También a veces se denomina indexación semántica latente. La técnica opera con la idea de que los conceptos relacionados ocurren juntos en el texto. Utiliza estadísticas para construir las relaciones de palabras. Dado un corpus de documentos lo suficientemente grande, definitivamente resolverá su problema de encontrar palabras relacionadas.

Cuestiones relacionadas