¿Qué métodos / códigos están disponibles para estudiar un corpus que consiste en correos electrónicos?

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)

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: (

? )” <- "Tirrell, ¿qué demonios es eso?". Déjame romperlo. La regla de nuestra gramática dice: "Encuentra mis frases nominales (NP) que tienen un determinante opcional (DT) seguido de cualquier número de adjetivos (JJ) y luego un sustantivo (NN)". Así que este trozo de gramática encontraría algo así como "El niño rebelde", y la gramática se define como un "Patrón de etiqueta"

¿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.

More Interesting

¿Cómo determina el algoritmo de aprendizaje automático de Quora la clasificación de la calidad de la pregunta?

¿Cuáles son tus artículos favoritos de NIPS 2016?

Cómo explicar el aprendizaje automático y la minería de datos a personas no informáticas

¿Cuáles son algunas arquitecturas de redes neuronales?

¿Qué es la indexación semántica latente?

¿Dónde puedo encontrar una biblioteca pública de algoritmos de aprendizaje automático (ML) y aprendizaje profundo (DL) con muestras?

¿Keras es mejor que Tensorflow para el aprendizaje profundo?

¿Cómo afecta el término de regularización a la constante de Lipschitz en la minimización empírica regularizada del riesgo?

¿Se está realizando una fuerte investigación en la intersección del aprendizaje automático y la neurociencia computacional?

A9: ¿Cuáles son los algoritmos utilizados para implementar sugerencias de búsqueda y recomendaciones de categoría en Amazon?

¿Qué estrategia usaste para resolver el juego 2048? ¿Por qué?

¿Cuáles son algunos ejemplos de empresas no tecnológicas que crean valor a través del uso de Big Data y qué tecnologías específicas están utilizando, por ejemplo, Hadoop, sistemas dedicados, SAP en formas novedosas, piratas informáticos, etc.

¿Cuáles son algunos buenos cursos y certificaciones en línea en aprendizaje automático e inteligencia artificial para un estudiante universitario de CS actual?

¿Cómo explicaría el concepto de una capa convolucional en una red profunda a una persona no técnica?

¿Cuáles son las aplicaciones de aprendizaje profundo que consideras sin explotar?