Mam bazę danych zawierającą zdania, które zawierają tylko litery pisane wielką literą. Baza danych jest techniczna, zawierająca terminy medyczne i chcę ją znormalizować, aby wielkość liter była zbliżona do oczekiwanej przez użytkownika. Jaki jest najlepszy sposób, aby to osiągnąć? Czy istnieje swobodnie dostępny zestaw danych, którego mogę użyć, aby pomóc w procesie?Jak najlepiej określić prawidłową wielkość liter dla słowa?
Odpowiedz
Szukaj pracy na truecasing: http://en.wikipedia.org/wiki/Truecasing
Byłoby naprawdę łatwe do wygenerowania ustawić własne dane, jeśli mają dostęp do podobnych danych medycznych z normalnym kapitalizacji. Zamapuj wszystko i użyj mapowania do oryginalnego tekstu, aby szkolić/testować swój algorytm.
Jednym ze sposobów może być wywnioskować kapitalizacji z POS-tagging, na przykład za pomocą Python Natural Language 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
To nie będzie idealny, zwłaszcza dlatego, że nie wiem, co się dane exactely wygląda, ale może masz pomysł:
>>> 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."
świetne rozwiązanie. Również ten api może ci się spodobać. [tekst] (https://pypi.python.org/pypi/textacy) – Pramit
najprostszym sposobem na to jest użycie algorytmu korekcji pisowni oparciu o ngrams.
Można użyć na przykład LingPipe SpellChecker. Możesz znaleźć kod źródłowy do przewidywania spacji w słowie, podobny do tego, co można zrobić dla przewidywania przypadku.
- 1. Lista niewrażliwa na wielkość liter
- 2. wielkość liter na Mac dla file_exists()?
- 3. Adresy niewrażliwe na wielkość liter dla Django?
- 4. wielkość liter Directory.Exists/File.Exists
- 5. PHP wielkość liter explode()
- 6. ignorować wielkość liter w regex.replace?
- 7. JavaScript: niewrażliwe na wielkość liter
- 8. Jak mogę zmienić wielkość liter klawisza skrótu?
- 9. Wybierz wielkość liter w LINQ
- 10. Jak mogę zrobić rozróżnianie wielkości liter niewrażliwe na wielkość liter?
- 11. Ignoruj wielkość liter z difflib.get_close_matches()
- 12. Jak zmienić wielkość liter w ggplot?
- 13. Jak zachować wielkość liter w atrybucie danych?
- 14. Jak ustawić operator% like% na wielkość liter?
- 15. Jak mogę przeszukiwać wielkość liter w pgrep?
- 16. GitHub: Jak rozróżniać wielkość liter w repozytorium?
- 17. Entity Framework - wielkość liter nie zawiera?
- 18. Dodawaj wielkość liter bez sortowania do PostgreSQL
- 19. NSPredicate - wielkość liter ma znaczenie dla wielu warunków filtrowania
- 20. Łańcuch niewrażliwy na wielkość liter :: znajdź
- 21. Android - SQLite Cursor getColumnIndex() rozróżnia wielkość liter?
- 22. Filtr niewrażliwy na wielkość liter Spark'a SQL dla warunków kolumnowych
- 23. Czy istnieje alternatywa dla ciągu.Rozpak nie ma znaczenia wielkość liter?
- 24. Wyszukiwanie niewrażliwe na wielkość liter w Mongo
- 25. Nazwa odgałęzienia Git - wielkość liter jest niewrażliwa?
- 26. Zmień wielkość liter za pomocą regex Javascriptu
- 27. Ścieżka XML - wielkość liter nie ma znaczenia
- 28. CMake zmienne nazwy rozróżniają wielkość liter?
- 29. Lista zapytań Django nieodczułowa na wielkość liter
- 30. Nieczułe na wielkość liter porównywanie ciągów znaków
warunki medyczne będą trudne. –
To jest specyficzne dla języka, btw. Czy Twoje dane są w języku angielskim? –
@Alex Yep, cały angielski. – Mike