python - stopwords - Cómo extraer citas del texto usando NLTK
textblob spanish (2)
Como mencionó Mayur, puedes hacer una expresión regular para recoger todo entre comillas
list = re.findall("/".*?/"", string)
El problema con el que se encontrará es que puede haber una cantidad sorprendentemente grande de cosas entre comillas que en realidad no son citas.
Si está haciendo artículos académicos, puede buscar un número después de la cita de cierre para recoger el número de nota al pie. De lo contrario, con artículos no académicos, tal vez podría ejecutar algo como:
"(said|writes|argues|concludes)(,)? /".?/""
puede ser más preciso, pero se arriesga a perder comillas como blockquotes (las comillas en bloque le causarán problemas de todos modos porque pueden incluir una nueva línea antes de la comilla de cierre)
En cuanto al uso de NLTK, no puedo pensar en nada que sea de mucha ayuda, aparte de wordnet para encontrar sinónimos para "dicho".
Esta pregunta ya tiene una respuesta aquí:
- RegEx: agarrar valores entre comillas 15 respuestas
Tengo un proyecto en el que necesito extraer citas de un gran conjunto de artículos. Aquí, por citas, me refiero a las cosas dichas por las personas, por ejemplo: Alen dijo "texto para extraer". Estoy usando NLTK para mis otras tareas relacionadas con PNL, por lo que cualquier solución que use NLTK o cualquier tipo de biblioteca de Python sería bastante útil.
Gracias
Esto califica como un patrón, es decir, los datos que busca están siempre entre comillas ""
. En pocas palabras, puede usar expresiones regulares para emparejar patrones. Tomemos este ejemplo, she said " DAS A SDASD sdasdasd SADSD", " SA23 DSD " ASDAS "ASDAS1 3123$ %$%"
La expresión regular que funciona para tu ejemplo básico es -
list = re.findall("/".*?/"", string)
List
nos proporciona [''" DAS A SDASD SADASD SADSD"'', ''" SA23 DSD "'', ''"ASDAS1 3123$ %$%"'']
Aquí,. .*?
coincide con cualquier carácter (excepto la nueva línea) y el patrón coincide con las comillas (comenzando /"
y terminando /"
) literalmente.
Tenga cuidado con el hecho de que las comillas entre comillas rompa este código. No obtendrás el resultado esperado.