Tengo una base de datos que contiene oraciones que solo contienen letras mayúsculas. La base de datos es técnica, contiene términos médicos y quiero normalizarla para que la capitalización sea (cercana a) lo que espera el usuario. ¿Cuál es la mejor manera de lograr esto? ¿Hay un conjunto de datos disponible libremente que pueda usar para ayudar con el proceso?¿Cómo puedo determinar mejor el uso de mayúsculas correcto para una palabra?
Respuesta
Búsqueda de trabajo sobre truecasing: http://en.wikipedia.org/wiki/Truecasing
Sería muy fácil generar establecer sus propios datos si tiene acceso a los datos médicos similares con mayúsculas normal. Capitalice todo y use la asignación al texto original para entrenar/probar su algoritmo.
Una forma podría ser para inferir la capitalización del POS-etiquetado, por ejemplo, usando el lenguaje natural del pitón Toolkit (NLTK):
import nltk, re
def truecase(text):
truecased_sents = [] # list of truecased sentences
# apply POS-tagging
tagged_sent = nltk.pos_tag([word.lower() for word in nltk.word_tokenize(text)])
# infer capitalization from POS-tags
normalized_sent = [w.capitalize() if t in ["NN","NNS"] else w for (w,t) in tagged_sent]
# capitalize first word in sentence
normalized_sent[0] = normalized_sent[0].capitalize()
# use regular expression to get punctuation right
pretty_string = re.sub(" (?=[\.,'!?:;])", "", ' '.join(normalized_sent))
return pretty_string
Esto no va a ser perfecto, sobre todo porque no sé lo que su los datos se ve como exactely, pero tal vez usted puede conseguir la idea:
>>> text = "Clonazepam Has Been Approved As An Anticonvulsant To Be Manufactured In 0.5mg, 1mg And 2mg Tablets. It Is The Generic Equivalent Of Roche Laboratories' Klonopin."
>>> truecase(text)
"Clonazepam has been approved as an anticonvulsant to be manufactured in 0.5mg, 1mg and 2mg Tablets. It is the generic Equivalent of Roche Laboratories' Klonopin."
gran solución. También puede encontrar esta API interesante. [textacy] (https://pypi.python.org/pypi/textacy) – Pramit
la manera más fácil de hacer esto es utilizar un algoritmo de corrección ortográfica basado en N-gramas.
Puede usar, por ejemplo, LingPipe SpellChecker. Puede encontrar el código fuente para predecir espacios en word, similar a lo que se puede hacer para predecir el caso.
- 1. ¿Existe alguna forma mejor de determinar el tamaño correcto para una UITableViewCell?
- 2. Uso correcto de DllImport
- 3. uso correcto de GetClipRgn?
- 4. Determinar el hilo correcto para depurar en GDB
- 5. uso correcto de scipy.optimize.fmin_bfgs
- 6. Uso correcto de BoneCP
- 7. strncmp uso correcto
- 8. ¿Cómo puedo determinar una zona horaria por el desplazamiento UTC?
- 9. Uso correcto de caché NSFetchedResultsController
- 10. Uso correcto de SetThreadAffinityMask
- 11. ¿Cómo puedo determinar si el sistema de archivos distingue entre mayúsculas y minúsculas en .net?
- 12. ¿cómo puedo hacer una jQuery jurar palabra/mala palabra filtro?
- 13. Uso correcto de .htpasswd
- 14. El uso correcto de impulso lambda
- 15. ¿Cuál es el uso correcto de EnsureChildControls()?
- 16. ¿Cómo uso una cadena como argumento de palabra clave?
- 17. El uso correcto de Stat en C
- 18. ¿Cuál es el uso correcto de DataContext.Refresh()?
- 19. WebClient.UploadData uso correcto para la solicitud posterior
- 20. ¿Cómo puedo determinar el ángulo del dispositivo?
- 21. ¿Cómo puedo determinar el canal SATA para un disco dado?
- 22. uso correcto de las clases?
- 23. ¿Cómo uso la reflexión para determinar el tipo anidado (tipo de elemento) de una matriz?
- 24. ¿Cómo determinar si el Bloqueo de mayúsculas está alternado en una aplicación de Silverlight?
- 25. Diccionario concurrente Uso correcto
- 26. Delphi XE TBytes uso correcto
- 27. HTML5 etiqueta nav uso correcto
- 28. ¿Cómo puedo determinar el acceso a una instancia de MemberInfo?
- 29. ¿Cómo uso una palabra clave C# como nombre de propiedad?
- 30. MySQL Enum uso correcto?
términos médicos serán difíciles. –
Esto es específico del idioma, por cierto. ¿Tus datos están en inglés? –
@Alex Yep, todo inglés. – Mike