2011-10-09 53 views
8

Tôi có một cơ sở dữ liệu chứa các câu chỉ chứa các chữ cái viết hoa. Cơ sở dữ liệu là kỹ thuật, có chứa thuật ngữ y tế và tôi muốn bình thường hóa nó để viết hoa là (gần) những gì người dùng mong đợi. cách tốt nhất để đạt được điều này là gì? Có sẵn một tập dữ liệu tự do có sẵn để trợ giúp quá trình này không?Làm cách nào để xác định chính xác cách viết hoa chính xác cho một từ?

+0

điều khoản y tế sẽ khó khăn. –

+1

Đây là ngôn ngữ cụ thể, btw. Dữ liệu của bạn có bằng tiếng Anh không? –

+0

@Alex Yep, tất cả tiếng Anh. – Mike

Trả lời

4

Tìm kiếm công việc trên truecasing: http://en.wikipedia.org/wiki/Truecasing

Nó sẽ thực sự dễ dàng để tạo ra dữ liệu của bạn được thiết lập nếu bạn có quyền truy cập vào dữ liệu y tế tương tự với vốn hóa bình thường. Tận dụng mọi thứ và sử dụng ánh xạ tới văn bản gốc để đào tạo/kiểm tra thuật toán của bạn.

7

Một cách có thể để suy ra giá trị vốn từ POS-tagging, ví dụ bằng cách sử dụng Python Ngôn ngữ tự nhiê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 

này sẽ không được hoàn hảo, đặc biệt là bởi vì tôi không biết những gì bạn dữ liệu chính xác trông giống như, nhưng có thể bạn có thể có được ý tưởng:

>>> 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." 
+0

giải pháp tuyệt vời. Bạn có thể tìm thấy api này thú vị là tốt. [textacy] (https://pypi.python.org/pypi/textacy) – Pramit

2

Cách dễ nhất để làm điều này là sử dụng thuật toán sửa lỗi chính tả dựa trên ngram.

Bạn có thể sử dụng, ví dụ: LingPipe SpellChecker. Bạn có thể tìm mã nguồn để dự đoán khoảng trắng trong từ, tương tự như những gì có thể được thực hiện để dự đoán trường hợp.

Các vấn đề liên quan