2012-12-19 21 views
9

Đã tự hỏi liệu có ai có mẹo hay có thể chỉ cho tôi đúng hướng để tìm/tạo một số loại thuật toán để tìm các từ có vần.Thực hiện công cụ tìm vần điệu

Tôi đặc biệt không muốn sử dụng API, vì việc tạo thuật toán chỉ để tạo ra nó là mục tiêu cuối cùng của tôi.

Điều đó không quan trọng nhưng tôi đang viết mã bằng java.

Cảm ơn bạn

+0

Chúc may mắn, vô cùng khó khăn? – EricG

+0

định nghĩa của vần điệu là gì? –

+0

@AlexLynch http://en.wikipedia.org/wiki/Rhyme, tôi không biết ngôn ngữ của bạn có định nghĩa chúng hay không nhưng bản địa của tôi (tiếng Ba Lan) chúng tôi cũng phân loại các vần điệu. ;-) –

Trả lời

7

Điều này có vẻ như nó có thể là một dự án rất lớn nếu bạn không muốn sử dụng một API. Bước thử thách sẽ là xác định ngữ âm của một từ (hai từ vần điệu nếu kết thúc của chúng tương đồng về mặt ngữ âm). Nếu bạn có thể làm điều này, bạn có thể so sánh các kết thúc của cách phát âm của chúng. Bạn có thể tìm thấy một API có thể chuyển đổi các từ đã biết thành cách phát âm theo ngữ âm của chúng, nhưng nếu bạn không muốn sử dụng các API, bạn phải tự làm điều đó và nó không có nhiệm vụ nhỏ ... chưa kể, chưa được hoàn hảo bởi bất kỳ ai .

Các phương pháp khác sẽ được nghiên cứu các thuật toán Metaphone, giải thích ở đây: http://www.blackbeltcoder.com/Articles/algorithms/phonetic-string-comparison-with-soundex

+0

Soundex được phát triển đặc biệt cho tên gia đình Bắc Mỹ trong quá trình xử lý điều tra dân số của họ. Nó không phải là một thư viện mục đích chung để phân tích ngữ âm của các từ, mặc dù nó vẫn có thể được quan tâm đến người hỏi. Nó cũng tập trung vào đầu của từ, trong khi vần điệu liên quan đến kết thúc của họ. Kỹ thuật này có thể dễ uốn. –

+0

Tôi đã cung cấp liên kết đó vì thuật toán Metaphone chứ không phải Soundex. – Foggzie

6

thuật toán xuất sắc nhất sẽ sử dụng một cuốn từ điển các từ được phân loại vào các nhóm với vần. Đó là vấn đề rất khó và cần nền ngôn ngữ học. Tôi cho rằng bạn muốn một số, có lẽ không phải là tốt nhất, thuật toán để tự động tìm các vần điệu.

Ý tưởng cơ bản về cách phát âm mã của từ (không phải từ chính nó) với một số giá trị. Và các giá trị kết thúc bằng các mã bằng nhau xác định các từ vần.

Từ quan điểm của tôi, đó là nghiên cứu nhiều hơn việc tìm kiếm thuật toán chính xác.

Hãy nhìn vào giấy rằng: A System for the Automatic Identification of Rhymes

4

Tôi nghĩ rằng tận dụng một thuật toán âm chuẩn sẽ là một ý tưởng tốt. Tôi nghĩ Soundex có thể hơi bị giới hạn, nhưng một số double metaphone có lẽ sẽ là một lựa chọn tốt.

Nhận các đại diện metaphone của các từ được đề cập, xóa các ký tự đầu tiên và kiểm tra xem phần còn lại của hai từ này có khớp với thời gian dài hơn hay không. Với metaphone kép, nó rất giống nhau, nhưng thực hiện bốn so sánh, tiểu học đến tiểu học, trung học đến tiểu học, tiểu học đến trung học và trung học đến trung học.

Tôi nghĩ đó sẽ là điểm khởi đầu tốt.

Lưu ý về điều này và nhiều thuật toán ngữ âm khác: Nó không được thiết kế để cung cấp định nghĩa ngữ âm chính xác. Phát âm địa lý đa dạng, phát âm sai phổ biến và phát âm thay thế khiến cho phát âm chính xác một cách nhanh chóng và khó có thể đạt được chỉ dựa trên từ. Tiểu thuyết chính tả và cách sử dụng thư làm cho khó có thuật toán có được cách phát âm gần (chăm sóc cho một số món khai vị?). Ngoài ra, mục tiêu chính của nhiều thuật toán như vậy là trùng khớp các từ hoặc tên tương tự với nhau hoặc âm thanh, vì vậy kết quả thường có ý nghĩa không chính xác (điều này có thể là một điều tốt cho mục đích này).

+1

Double metaphone giảm tất cả các nguyên âm không phải ban đầu từ từ, do đó, nó không giúp bạn có được tất cả các cách có trên vần điệu. – charleyc

+0

Hoàn toàn đúng. Tuy nhiên, tôi vẫn đảm bảo rằng đó là một điểm khởi đầu tốt. – femtoRgon

3

Tôi đã viết một chương trình từ điển vần điệu tại my blog. Ý tưởng là sử dụng một từ điển với cách phát âm và so sánh các âm vị bắt đầu từ cuối; hai từ có cùng âm vị kết thúc là vần điệu cho nhau.