2013-03-07 37 views
7

Vâng, tôi biết câu hỏi này được hỏi nhiều lần nhưng tôi vẫn không thể khắc phục nó bằng giải pháp "có sẵn". Hy vọng có thêm bất kỳ ý tưởng hay khái niệm nào về cách phát hiện câu của tôi là tiếng Anh trong python. Các giải pháp có sẵn:Phát hiện xem văn bản bằng tiếng Anh có python

  • Ngôn ngữ Detector (trong ruby ​​không trong python: /)
  • Google Translate API v2 (Không còn tự do, đã trả 20 đô la một tháng trong khi tôi đang làm dự án này cho các mục đích học tập . Courtesy hạn:.? 0 ký tự/ngày) xác định
  • ngôn ngữ cho python (mã nguồn không tìm thấy, liên kết ở bên dưới automatic-language-identification)
  • Enchant (nó không cho python 2.7 tôi mới để trăn, bất kỳ hướng dẫn tôi? đặt cược đây sẽ là cái tôi cần)
  • Wordnet từ NLTK (tôi đã nhận không biết tại sao "wordnet.synsets" bị thiếu và chỉ có "wordnet.Synset" có sẵn. mã mẫu trong giải pháp không hoạt động đối với tôi cũng như T_T, có thể là vấn đề phiên bản một lần nữa?)
  • Lưu từ tiếng Anh vào danh sách và so sánh nếu từ tồn tại (yea, đó là cách tiếp cận xấu trong khi các câu là từ twitter và .. bạn biết rằng: P)

LÀM vIỆC gIẢI PHÁP

Cuối cùng sau một loạt các cố gắng, sau đây là giải pháp làm việc (thay thế cho danh sách ở trên)

  • Wikt API ion (Sử dụng Urllib2 và simplejson để phân tích cú pháp đó. sau đó tìm nếu khóa là -1 có nghĩa là từ không tồn tại. khác là tiếng anh. tất nhiên, để sử dụng trong twitter phải tiền xử lý từ của bạn thành không có ký tự đặc biệt như @ #,?!. Để biết cách tìm khóa sẽ tham chiếu ở đây. Simplejson and random key value)
  • Trả lời từ Dogukan Tufekci (Ticked) (Điểm yếu: Giả sử câu ngắn hơn 20 ký tự phải cài đặt PyEnchant hoặc nó sẽ trả về UNKNOWN. Trong khi PyEnchant không hỗ trợ Python 2.7, có nghĩa là không thể cài đặt và không làm việc ít hơn 20 ký tự câu)

Tài liệu tham khảo

+0

Câu hỏi thú vị. Một cải tiến để lưu trữ các từ trong một danh sách sẽ được lưu trữ chúng trong một bộ hoặc từ điển. Cách tiếp cận danh sách là O (n) trong đó các phương pháp tiếp cận khác là O (1). – Octipi

+0

Không đặt giải pháp trong câu hỏi, thay vào đó hãy đăng câu trả lời. Trả lời câu hỏi của riêng bạn nếu bạn có câu trả lời được khuyến khích –

Trả lời

8

Bạn có thể thử thư viện guess_language mà tôi tìm thấy thông qua Miguel Grinber's The Flask Mega Tutorial. Dường như nó hỗ trợ Python 2 và 3 vì vậy nó sẽ là ok.

+0

Cảm ơn;) Gần đây tôi không thể tìm thấy tài liệu và bị bỏ qua. Btw, bạn có bất kỳ đầu mối nào về cách sửa lỗi này không? Nhập không có lỗi nhưng khi tôi cố gắng gọi guess_language ("Câu của tôi"), nó trả lại cho tôi những điều sau: Traceback (cuộc gọi gần đây nhất): Tệp "", dòng 1, trong TypeError: 'module' không gọi được – 1myb

+3

Việc nhập của bạn phải là: từ guess_language guessLanguage nhập khẩu và cuộc gọi của bạn sẽ là guessLanguage ('Câu của tôi'). Bạn đang gọi mô-đun sai. Lỗi loại thực sự hữu ích nếu bạn cố gắng hiểu những gì được nói. Trong trường hợp này nó nói bạn đang gọi một đối tượng 'module'. –

+0

Tefekci, Cảm ơn rất nhiều;) Tài liệu gây phiền nhiễu -.- – 1myb

1

Bạn có thể có thể sử dụng các mô hình Markov ẩn để phát hiện ngôn ngữ, mỗi ngôn ngữ sẽ có những đặc điểm riêng của họ.

+0

Tôi có thể có một số liên kết tham khảo xin vui lòng;) Cảm ơn – 1myb

+0

http: //en.wikipedia.org/wiki/Hidden_Markov_model xin lỗi vì là terse, nhưng về cơ bản xác suất của một chuỗi byte cụ thể phụ thuộc vào ngôn ngữ. Trong tiếng Anh, "hello" thể hiện chuỗi các byte có khả năng hơn chuỗi thứ tự hiếm khi xảy ra trong ngôn ngữ, chẳng hạn như "encontrar". Sự khác biệt có thể hơi nhỏ đối với các từ riêng lẻ, tuy nhiên nếu bạn có một cụm từ, bạn sẽ có thể nhận được kết quả thuyết phục hơn. – Arafangion

+0

Thành thật mà nói, tôi chỉ đi với câu trả lời của Dogukan. – Arafangion

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