Obtener nombres y fechas de los encabezados del correo electrónico es relativamente sencillo, ya que se trata de información estructurada. Obtener ubicaciones geográficas del contenido del correo electrónico en sí no lo es. Así es como lo abordaría.
Primero, algunos antecedentes. De lo que estamos hablando aquí es de ‘Extracción de información ‘ y ‘ Detección de entidades ‘. Como sabemos que estamos buscando ubicaciones geográficas, podemos intentar convertir los datos no estructurados en el cuerpo de un correo electrónico en datos estructurados. Básicamente analizamos en una base de datos.
En el programa: La arquitectura básica de dicho sistema podría verse así:
Texto sin formato ->: Segmentación de oraciones: -> Oraciones ->: Tokenización: -> Oraciones tokenizadas ->: Parte del etiquetado del habla: -> Oraciones etiquetadas con POS ->: Detección de entidad: -> oraciones fragmentadas -> 🙁 OPCIONAL) Detección de relación: -> Relaciones (lista de tuplas)
- ¿Cuál es el propósito de usar la variable slack en SVM?
- Cómo decidir el tema de mi interés de investigación para obtener un doctorado en visión artificial y aprendizaje automático
- ¿Cómo aprendo el aprendizaje automático y dónde puedo practicarlo?
- ¿Cuál es la diferencia entre los pronósticos de combinación y conjunto?
- ¿Cómo funciona la selección de características bayesianas?
NLTK sería mi herramienta de elección. Para hacer los primeros tres pasos, usaría el segmentador de oraciones predeterminado, el tokenizador de palabras y el etiquetador pos.
def steps_one_to_three (documento):
oraciones = nltk.sent_tokenize (documento)
oraciones = [nltk.word_tokenize (enviado) para enviado en oraciones]
oraciones = [nltk.pos_tag (enviado) para enviado en oraciones]
Esto le dará oraciones etiquetadas POS.
El siguiente paso sería segmentar y etiquetar las entidades que podrían tener relaciones interesantes entre sí, como un nombre propio (Houston, Texas). Luego, podemos buscar patrones específicos entre pares de entidades que ocurren cerca uno del otro en el texto, y usar eso para construir nuestras tuplas para documentar la relación entre los derechos.
¡Entra Chunking! La fragmentación es una técnica básica para la detección de entidades. Segmenta y etiqueta secuencias de múltiples tokens, como “el ingeniero inteligente” en algo llamado frase sustantiva. Gracias a Dios, porque la información geográfica es una frase nominal (Houston, Texas). A veces, un humano puede mirar una frase nominal y decir “hey, esa es una sola frase nominal, pero mi fragmento se dividió en 2 frases nominales”. Está bien. El algoritmo trata de hacer que nuestras frases nominales sean lo suficientemente pequeñas como para que no contengan ninguna otra frase sustantiva ‘anidada’, por lo que es precavido. ¿Tener sentido? Aquí hay un ejemplo:
“La asociación nacional para el avance de los pueblos de color” es claramente una sola frase nominal, pero contiene frases nominales anidadas. Sin embargo, se capturará como una serie de fragmentos de frases nominales.
Suficiente sobre trozos. ¿Que sigue? Para utilizar nuestro chunker de manera efectiva, necesitamos definir una gramática de trozos. Este será el conjunto de reglas que dictará cómo se deben fragmentar las oraciones. Esto es bastante sencillo en forma de expresión regular:
grammar = “NP: (
¿Sigues conmigo? Bueno. Ahora puedo volver a la pregunta original de encontrar una geografía en datos no estructurados. Anteriormente, hablé sobre Entidades nombradas, que es lo que queremos extraer. El objetivo de un sistema de “reconocimiento de entidad nombrada” es identificar todas las menciones textuales de las entidades nombradas, y esto equivale a identificar los límites de la entidad nombrada, luego identificar su tipo.
Ejemplos:
ORGANIZACIÓN: Quora, Inc
PERSONA: TIRRELL PAYTON
UBICACIÓN, HOUSTON, TX
Lo bueno del reconocimiento de entidades con nombre es que también puede hacer otras cosas, como ayuda para responder preguntas. Hiciste una búsqueda en Google de “¿Quién fue el primer hombre negro asesinado en la guerra revolucionaria?”.
Google devuelve una entrada de Wikipedia que se parece a esto: ” Crispus Attucks (c. 1723 – 5 de marzo de 1770) fue un trabajador portuario de Wampanoag y de ascendencia africana. Fue la primera persona asesinada a tiros por los casacas rojas británicas durante la Masacre de Boston, en Boston , Massachusetts. [2] Ha sido llamado el primer mártir de la revolución. [3] “. Si tuviéramos que pasar este pasaje a través de nuestro Sistema de reconocimiento de entidades, podría devolver algo como “Crispus Attucks fue el primer hombre negro asesinado en la guerra revolucionaria”. Genial ¿eh?
Ok, me estoy desviando de nuevo, volvamos a las geografías. En el caso de las ubicaciones, podríamos usar un diccionario geográfico (diccionario geográfico), pero las búsquedas de diccionario pueden ser bastante tontas porque coinciden con patrones ciegos. “La lectura es fundamental” <- piensa que este pasaje trata sobre Reading, Reino Unido. Bueno, se trata de leer … como la forma gerundia del verbo "leer", no el LUGAR "Leer, Reino Unido". AHA ¡Ahora verá por qué todo el deslumbramiento en el etiquetado POS será importante!
NLTK es genial porque tiene un clasificador que ya puede reconocer entidades con nombre <-Damn Tirrell, ¿por qué no lo dijiste antes? ¡Porque tuve que construir suspenso y apreciar la magnitud y el desorden del espacio problemático! No solo eso, sino que adivina lo que nltk.ne_chunk toma como entrada: ¡es correcto, oraciones etiquetadas pos!
Las etiquetas NLTK nombran entidades según las etiquetas de categoría. Como nota al margen, la nueva versión de NLTK incluye una interfaz para el Reconocimiento de entidades con nombre de Stanford: http://nltk.github.com/api/nltk….
Las personas de Stanford son bastante inteligentes, por lo que esto puede funcionar mejor que el predeterminado. PERO por el bien de esta discusión, supongamos el caso vainilla de que estamos usando el nltk.ne_chunk predeterminado, y si usa ne_chunk, puede obtener una ubicación de sus datos no estructurados.
Entonces, ahora sabe cómo obtener ubicaciones de datos no estructurados como el correo electrónico. Si desea ir un paso más allá, puede extraer relaciones de las entidades de ubicación nombradas para responder preguntas como “¿Dónde estaba esta persona cuando se envió este correo electrónico?” o “¿Dónde está ubicada esta empresa?”
Entrar en eso está más allá del alcance de su pregunta, y escribo demasiado de todos modos. Espero que esto haya sido valioso.