J'ai une base de données contenant des phrases qui contiennent uniquement des lettres capitalisées. La base de données est technique, contenant des conditions médicales, et je tiens à le normaliser afin que la capitalisation soit (proche de) ce que l'utilisateur attend. Quel est le meilleur moyen d'y parvenir? Y a-t-il un jeu de données librement disponible que je peux utiliser pour aider au processus? P>
3 Réponses :
Recherche de travaux sur Truecasing: http://en.wikipedia.org/wiki/truecasingleightleight/a > p>
Il serait vraiment facile de générer votre propre ensemble de données si vous avez accès à des données médicales similaires avec une capitalisation normale. Capitaliser tout et utiliser le mappage vers le texte d'origine pour former / tester votre algorithme. P>
Un moyen pourrait être de déduire la capitalisation à partir du marquage POS, par exemple en utilisant la boîte à outils de langage naturel Python (NLTK):
>>> 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."
Grande solution. Vous pourriez trouver cette API intéressante aussi. Textacy
Notez que cette solution capitalisera tous les noms. Si vous souhaitez plutôt capitaliser uniquement les noms appropriés, utilisez ["nnp", "nnps"] code>.
N'est pas pas impossible de ne pas ==> n'est pas ce n'est pas ce n'est pas
'Je t'aime :)' ==> 'Je t'aime :)'
Le moyen le plus simple de le faire est d'utiliser un algorithme de correction de sorts basé sur des ngams. p>
Vous pouvez utiliser, par exemple Lingpipe Spellchecker . Vous pouvez trouver un code source pour prédire des espaces dans Word, similaires à ce qui peut être fait pour prévision de cas. p>
Ceci est spécifique à la langue, BTW. Vos données sont-elles en anglais?
Avez-vous des limites de la phrase? C'est-à-dire que vous savez où se termine une phrase et le prochain commence?