Làm cách nào để tôi có thể đặt tiền tố chính xác cho một từ với “a” và “an”?


92

Tôi có một ứng dụng .NET trong đó, được cung cấp một danh từ, tôi muốn nó đặt tiền tố chính xác từ đó bằng "a" hoặc "an". Tôi sẽ làm điều đó như thế nào?

Trước khi bạn nghĩ câu trả lời là chỉ cần kiểm tra xem chữ cái đầu tiên có phải là một nguyên âm hay không, hãy xem xét các cụm từ như:

  • một sai lầm trung thực
  • một chiếc xe cũ

4
Bạn cũng phải xem xét các chữ viết tắt cũng có thể dẫn đến một số nhầm lẫn về tha "a" hoặc "an" như "an NHL" cũng xuất hiện âm thanh của một chữ cái bắt đầu bằng một nguyên âm mặc dù không phải nếu chữ viết tắt có thể được phát âm như một từ như vậy. là "một thiết bị NAS" hoặc "một sự kiện NASCAR"
JB King

5
Cũng nên nhớ rằng việc sử dụng a hoặc an có thể phụ thuộc vào cách phát âm cụ thể trong nhiều loại tiếng Anh được nói. Cách phát âm từ herb của Anh và Mỹ là một trong những ví dụ như vậy.
Eric

12
@Eric: Thật vậy, ví dụ yêu thích của tôi về điều này (cả mọt sách nữa) là "SQL". Một số người nói các chữ cái "SQL", một số người phát âm nó giống như từ "phần tiếp theo". Mỗi cái nhận được một "a" hoặc "an" khác nhau. ví dụ đó là "một tuyên bố phần tiếp theo" câu "đó là một câu lệnh SQL"
Binary hay lo lắng

Khó khăn hơn nữa là các ý kiến ​​thậm chí còn khác nhau trong cùng một phương ngữ tiếng Anh! Vì vậy, ví dụ, tiếng Anh chính thức (Anh) cho chúng ta biết "một khách sạn" là cấu trúc đúng, nhưng hầu hết mọi người sẽ sử dụng "một khách sạn" trong cuộc trò chuyện hàng ngày. Nếu bạn viết một cái, nó sẽ rất hữu ích cho phần còn lại của chúng ta!
h4xxr

Ah ... "H khao khát". Tôi nhớ rất rõ cuộc gặp gỡ đầu tiên của tôi với nó. Một cuốn sách nghiên cứu xã hội lớp hai có tên "Một xã hội lịch sử", một cuốn sách về Williamsburg thuộc địa.
Bob Kaufman

Câu trả lời:


137
  1. Tải xuống Wikipedia
  2. Giải nén nó và viết một chương trình lọc nhanh chỉ lấy ra văn bản bài viết (bản tải xuống thường ở định dạng XML, cùng với siêu dữ liệu không phải là bài báo).
  3. Tìm tất cả các trường hợp của a (n) .... và tạo chỉ mục cho từ sau và tất cả các tiền tố của nó (bạn có thể sử dụng một hậu tố đơn giản cho việc này). Điều này phải phân biệt chữ hoa chữ thường và bạn sẽ cần độ dài từ tối đa - 15 chữ cái?
  4. (tùy chọn) Loại bỏ tất cả các tiền tố xuất hiện ít hơn 5 lần hoặc trong đó "a" so với "an" đạt được ít hơn 2/3 đa số (hoặc một số tiền tố khác - tinh chỉnh tại đây). Tốt hơn là giữ tiền tố trống để tránh trường hợp góc.
  5. Bạn có thể tối ưu hóa cơ sở dữ liệu tiền tố của mình bằng cách loại bỏ tất cả các tiền tố mà cha mẹ có cùng chú thích "a" hoặc "an".
  6. Khi xác định xem nên sử dụng "A" hay "AN", hãy tìm tiền tố phù hợp dài nhất và đi theo hướng dẫn của nó. Nếu bạn không loại bỏ tiền tố trống trong bước 4, thì sẽ luôn có một tiền tố phù hợp (cụ thể là tiền tố trống), nếu không, bạn có thể cần một trường hợp đặc biệt cho một chuỗi hoàn toàn không khớp (đầu vào như vậy rất hiếm) .

Bạn có thể không thể làm tốt hơn điều này - và nó chắc chắn sẽ đánh bại hầu hết các hệ thống dựa trên quy tắc.

Chỉnh sửa: Tôi đã triển khai điều này trong JS / C # . Bạn có thể thử nó trong trình duyệt của mình hoặc tải xuống phần triển khai javascript nhỏ, có thể tái sử dụng mà nó sử dụng. Việc triển khai .NET là gói AvsAntrên nuget . Việc triển khai là nhỏ, vì vậy sẽ dễ dàng chuyển sang bất kỳ ngôn ngữ nào khác nếu cần.

Hóa ra các "quy tắc" khá phức tạp hơn tôi nghĩ:

  • đó là một kết quả ngoài dự đoán nhưng đó là một cuộc bỏ phiếu nhất trí
  • đó là một quyết định trung thực nhưng là một cây kim ngân
  • Biểu tượng: Đó là một số 0800, hoặc một ∞ của oregano.
  • Từ viết tắt: Đó là một nhà khoa học của NASA, nhưng là một nhà phân tích của NSA; một xe FIAT nhưng một chính sách FAA.

... mà chỉ nhấn mạnh rằng một hệ thống dựa trên quy tắc sẽ rất khó để xây dựng!


Và nếu thiếu một danh từ trong đầu ra này, bạn chắc chắn có thể quay trở lại công cụ quy tắc đơn giản.
John Fisher

26
Do tải xuống Wikipedia giải nén thành (hiện tại) 2,8 Terabyte, sẽ thật tuyệt nếu bất kỳ ai sử dụng phương pháp này sẽ đăng dữ liệu kết quả một cách công khai để quá trình này không phải lặp lại nhiều.
Nathan Long

10
Câu trả lời này không hoàn toàn nghiêm túc, nhưng tôi đã làm điều gì đó như thế này và tệp .xml của wikipedia với wikimarkup thô chỉ có dung lượng 40GB (tệp mới nhất luôn lớn hơn một chút), không phải 2,8TB - tất cả trong một tệp - không tải xuống phiên bản .html mở rộng hoặc bất kỳ hình ảnh nào, có thể đó là phiên bản 2,8TB? Trong mọi trường hợp, nó thực sự khá khả thi để phân tích cú pháp, miễn là bạn không kén chọn đánh dấu.
Eamon Nerbonne

1
Đó là một trong những tập dữ liệu ngôn ngữ tự nhiên, cập nhật, dễ sử dụng nhất mà tôi có thể nghĩ ra. Tuy nhiên, tất nhiên, bất kỳ nguồn dữ liệu bổ sung nào cũng tốt - xét cho cùng thì thuật toán không phụ thuộc vào wikipedia. Bạn có thể thử thực hiện trực tuyến tại home.nerbonne.org/A-vs-An hoặc blog của tôi
Eamon Nerbonne

1
Tôi đã vượt qua ấn tượng bởi giải pháp này. Tôi thành thật nghĩ rằng nó sẽ đơn giản hơn nhiều so với việc tải xuống toàn bộ Wikipedia. Làm tốt lắm, thưa ngài. +1
Kehlan Krumme.

15

Bạn cần sử dụng danh sách các trường hợp ngoại lệ. Tôi không nghĩ rằng tất cả các trường hợp ngoại lệ đều được xác định rõ ràng, bởi vì nó đôi khi phụ thuộc vào giọng của người nói từ đó.

Một cách ngu ngốc là yêu cầu Google cung cấp hai khả năng (sử dụng một trong các API tìm kiếm) và sử dụng phổ biến nhất:

Hoặc là:

Do đó "a europe" và "an trung thực" là phiên bản chính xác.


6
Đó là thực sự được phép sử dụng hay điều này đang yêu cầu bị cấm? Việc sử dụng thường xuyên như vậy chắc chắn sẽ khiến IIRC không hài lòng.
Eamon Nerbonne

1
@Eamon: Điểm thú vị. Điều gì sẽ xảy ra nếu ứng dụng giữ bản ghi tất cả các từ mà nó đã tìm kiếm trước đó, vì vậy nó chỉ phải google một lần cho mỗi từ mới mà nó gặp phải? Đó có còn là cách sử dụng Google đáng ngờ không?
gnovice

2
Ngoài những khó khăn kỹ thuật rõ ràng (việc sử dụng công cụ tìm kiếm đầu ra theo cách tự động như thế này không được phép và sẽ bị chặn khá nhanh), điều này không giải quyết được vấn đề theo cách chính xác - tệ nhất là nó sẽ lặp lại việc lạm dụng phổ biến cú pháp.
Guss

6
Lúc tồi tệ nhất? Có một lập luận khá mạnh mẽ được đưa ra rằng việc sao chép "lạm dụng phổ biến" là chính xác những gì một hệ thống ngôn ngữ tự nhiên nên cố gắng. Xem tiểu luận của David Foster Wallace "Quyền hạn và cách sử dụng của người Mỹ", trong bài Hãy xem xét con tôm hùm . Có nhiều kho tài liệu tốt hơn để sử dụng so với Google, nhưng đó là một vấn đề khác.
Robert Rossney

2
"một khách sạn" và "một nữ anh hùng" đều có vẻ đúng với tôi. Tôi đoán bạn đang đến từ một quan điểm giọng hơi tự mãn. Các trọng âm khác nhau có nghĩa là không có câu trả lời đúng cho một số từ này.
rjmunro

15

Nếu bạn có thể tìm thấy nguồn từ vựng cho cách phát âm từ, như:

"honest":"on-ist"
"horrible":"hawr-uh-buhl, hor-"

Bạn có thể quyết định dựa trên ký tự đầu tiên của chuỗi phát âm đánh vần. Đối với hiệu suất, có lẽ bạn có thể sử dụng cách tra cứu như vậy để tạo trước các bộ ngoại lệ và thay vào đó sử dụng các bộ tra cứu nhỏ hơn đó trong quá trình thực thi.

Đã chỉnh sửa để thêm:

!!! - Tôi nghĩ bạn có thể sử dụng điều này để tạo ngoại lệ của mình: http://www.speech.cs.cmu.edu/cgi-bin/cmudict

Tất nhiên, không phải tất cả mọi thứ đều có trong từ điển - có nghĩa là không phải mọi ngoại lệ có thể xảy ra đều có trong các bộ ngoại lệ của bạn - nhưng trong trường hợp đó, bạn có thể chỉ mặc định là một cho nguyên âm / a cho phụ âm hoặc sử dụng một số cách hiểu khác với tỷ lệ cược tốt hơn.

(Xem qua từ điển CMU, tôi rất vui khi thấy nó bao gồm các danh từ riêng cho các quốc gia và một số địa điểm khác - vì vậy nó sẽ cung cấp các ví dụ như "một người Ukraina", "một tờ báo USA Today", "một bức tranh lấy cảm hứng từ Urals".)

Chỉnh sửa một lần nữa để bổ sung: Từ điển CMU không chứa các từ viết tắt phổ biến và bạn phải lo lắng về những từ bắt đầu bằng s, f, l, m, n, u và x. Nhưng có rất nhiều danh sách từ viết tắt trên mạng, như trong Wikipedia, mà bạn có thể sử dụng để thêm vào các trường hợp ngoại lệ.


2
Không thể giúp bản thân mình, nhưng hawr-uh-buhlluôn luôn làm cho tôi cười.
IllidanS4 muốn Monica trở lại vào

9

Bạn phải thực hiện theo cách thủ công và thêm các ngoại lệ mà bạn muốn, chẳng hạn như nếu chữ cái đầu tiên là 'H' và theo sau là 'O' như trung thực, giờ ... và những cái ngược lại như châu Âu, đại học, được sử dụng ...


1
vâng, người đàn ông đích thực Tôi đoán tôi đã nhầm lẫn trong điều đó. Nó không có quy tắc nào cả
Ahmad Farid

8

Vì "a" và "an" được xác định bởi các quy tắc ngữ âm chứ không phải quy ước chính tả, tôi có thể sẽ làm như thế này:

  1. Nếu chữ cái đầu tiên của từ là phụ âm -> 'a'
  2. Nếu chữ cái đầu tiên của từ là một nguyên âm-> 'an'
  3. Giữ một danh sách các trường hợp ngoại lệ (tim, x-quang, nhà) như rjumnro nói .

5

Bạn cần xem các quy tắc ngữ pháp cho mạo từ không xác định (chỉ có hai mạo từ không xác định trong ngữ pháp tiếng Anh - "a" và "an). Bạn có thể không đồng ý những âm này đúng, nhưng quy tắc ngữ pháp tiếng Anh rất rõ ràng :

"Các từ a và an là mạo từ không xác định. Chúng tôi sử dụng mạo từ bất định an trước các từ bắt đầu bằng một nguyên âm (a, e, i, o, u) và mạo từ không xác định a trước các từ bắt đầu bằng phụ âm (tất cả chữ cái khác). "

Lưu ý rằng điều này có nghĩa là một nguyên âm chứ không phải là một ký tự nguyên âm . Ví dụ: các từ bắt đầu bằng chữ "h" im lặng, chẳng hạn như "vinh dự" hoặc "người thừa kế" được coi là nguyên âm an nên được tiếp tục với "an" - ví dụ: "Rất vinh dự được gặp bạn". Các từ bắt đầu bằng một phụ âm có tiền tố là - đó là lý do tại sao bạn nói "a used car" chứ không phải "a used car" - bởi vì "used" có âm "yoose" chứ không phải "uhh".

Vì vậy, là một lập trình viên, đây là những quy tắc cần tuân theo. Bạn chỉ cần tìm ra cách xác định âm của một từ bắt đầu bằng âm gì, thay vì chữ cái gì. Tôi đã xem các ví dụ về điều này, chẳng hạn như ví dụ này trong PHP của Jaimie Sirovich:

function aOrAn($next_word) 
{ 
    $_an = array('hour', 'honest', 'heir', 'heirloom'); 
    $_a = array('use', 'useless', 'user'); 
    $_vowels = array('a','e','i','o','u'); 

    $_endings = array('ly', 'ness', 'less', 'lessly', 'ing', 'ally', 'ially'); 
    $_endings_regex = implode('|', $_endings); 

    $tmp = preg_match('#(.*?)(-| |$)#', $next_word, $captures); 
    $the_word = trim($captures[1]); 
    //$the_word = Format::trimString(Utils::pregGet('#(.*?)(-| |$)#', $next_word, 1)); 

    $_an_regex = implode('|', $_an); 
    if (preg_match("#($_an_regex)($_endings_regex)#i", $the_word)) { 
        return 'an'; 
    } 

    $_a_regex = implode('|', $_a); 
    if (preg_match("#($_a_regex)($_endings_regex)#i", $the_word)) { 
        return 'a'; 
    } 

    if (in_array(strtolower($the_word{0}), $_vowels)) { 
        return 'an';     
    } 

    return 'a'; 
}

Có lẽ dễ nhất để tạo quy tắc và sau đó tạo danh sách các ngoại lệ và sử dụng quy tắc đó. Tôi không tưởng tượng sẽ có nhiều như vậy.


4

Anh bạn, tôi nhận ra rằng đây có lẽ là một cuộc tranh cãi đã dàn xếp, nhưng tôi nghĩ nó có thể được giải quyết dễ dàng hơn là sử dụng các quy tắc ngữ pháp đặc biệt từ Wikipedia, tốt nhất sẽ rút ra được ngữ pháp bản ngữ.

Có vẻ như giải pháp tốt nhất là sử dụng một hoặc một kích hoạt đối sánh dựa trên âm vị của từ sau đây, với một số âm vị nhất định luôn được kết hợp với "an" và âm vị còn lại thuộc "a".

Đại học Carnegie Mellon có một công cụ trực tuyến tuyệt vời cho những loại kiểm tra này - http://www.speech.cs.cmu.edu/cgi-bin/cmudict - và với 125 nghìn từ với 39 âm vị phù hợp. Việc cắm một từ vào cung cấp toàn bộ bộ ngữ âm, trong đó chỉ cái đầu tiên là quan trọng.

Nếu từ không xuất hiện trong từ điển, chẳng hạn như "NSA" và tất cả đều được viết hoa, thì hệ thống có thể giả định từ đó là Từ viết tắt và sử dụng chữ cái đầu tiên để xác định bài viết không xác định sẽ sử dụng dựa trên cùng một bộ quy tắc gốc.


1
Về mặt kinh tế tài nguyên, đây là câu trả lời tốt nhất và tôi không hiểu tại sao điều này lại hoạt động tệ hơn các phương pháp sử dụng nhiều dữ liệu hơn được đề xuất.
Dự án Chthonic

3

@Nathan Long: Tải xuống wikipedia thực ra không phải là một ý kiến ​​tồi. Tất cả hình ảnh, video và các phương tiện khác là không cần thiết.

Tôi đã viết một chương trình (crappy) bằng php và javascript (!) Để đọc toàn bộ wikipedia tiếng Thụy Điển (hoặc ít nhất là tất cả các aricles có thể truy cập được từ aricle về toán học, đây là bước khởi đầu cho con nhện của tôi.)

Tôi đã thu thập tất cả các từ và liên kết nội bộ trong cơ sở dữ liệu, đồng thời theo dõi tần suất xuất hiện của mọi từ. Bây giờ tôi sử dụng nó làm cơ sở dữ liệu từ cho các tác vụ khác nhau: * Tìm tất cả các từ có thể được tạo từ một tập hợp các chữ cái nhất định (bao gồm cả ký tự đại diện) * Tạo một tệp cú pháp đơn giản cho tiếng Thụy Điển (tất cả các từ không có trong cơ sở dữ liệu được coi là không chính xác).

Ồ, và việc tải toàn bộ wiki mất khoảng một tuần, hầu hết thời gian sử dụng máy tính xách tay của tôi, với kết nối 10Mbit.

Khi bạn đang ở đó, hãy ghi lại tất cả các lần xuất hiện không phù hợp với ngôn ngữ tiếng Anh và xem một số trong số đó có phải là lỗi không. Hãy sửa chúng và trả lại thứ gì đó cho cộng đồng.


2

Lưu ý rằng có sự khác biệt giữa phương ngữ Mỹ và Anh, như Grammar Girl đã chỉ ra trong tập A so với An của cô ấy .

Một điều phức tạp là khi các từ được phát âm khác nhau trong tiếng Anh Anh và Mỹ. Ví dụ: từ chỉ một loại cây nhất định được phát âm là “erb” trong tiếng Anh Mỹ và “herb” trong tiếng Anh Anh. Trong một số ít trường hợp đây là vấn đề, hãy sử dụng biểu mẫu sẽ được mong đợi ở quốc gia của bạn hoặc bởi đa số độc giả của bạn.




1

Bạn có thể lấy một cuốn từ điển tiếng Anh lưu trữ các từ được viết trong bảng chữ cái thông thường của chúng tôi và Bảng chữ cái ngữ âm quốc tế không?

Sau đó, sử dụng ngữ âm để tìm ra âm đầu của từ, và do đó liệu “a” hay “an” là phù hợp?

Không chắc liệu điều đó có thực sự dễ dàng hơn (hoặc thú vị bằng) cách tiếp cận thống kê của Wikipedia hay không.


0

Tôi sẽ sử dụng thuật toán dựa trên quy tắc để bao gồm nhiều nhất có thể, sau đó sử dụng danh sách các trường hợp ngoại lệ. Nếu bạn muốn trở nên lạ mắt, bạn có thể thử xác định một số "quy tắc" mới từ danh sách ngoại lệ của mình.


0

Tôi chỉ trông giống như một tập hợp các kinh nghiệm học. Nó cần phức tạp hơn một chút và trả lời một số điều mà tôi không bao giờ có câu trả lời chính xác, chẳng hạn như cách bạn xử lý các từ viết tắt ("một RPM" hoặc "một RPM"? Tôi luôn nghĩ cái sau có ý nghĩa hơn).

Một tìm kiếm nhanh chóng mang lại kết quả trên các thư viện ngôn ngữ nói về cách xử lý tiền tố số ít trong tiếng Anh, nhưng bạn có thể tìm thấy thứ gì đó nếu bạn đào sâu đủ. Và nếu không - bạn luôn có thể viết thư viện sơ lược của riêng mình và nổi tiếng thế giới :-).


Các từ viết tắt như RPM không phải là vấn đề. Như bạn nói họ có thể được điều trị theo một trong hai cách. Do đó, giải pháp là rõ ràng: bỏ qua chúng.
Andrew J. Brehm

Tôi sẽ không đồng ý vì điều đó gây ra tiền tố không nhất quán. Chỉ cần bỏ qua nó sẽ gây ra "RPM" và "UGC", điều này rõ ràng là sai.
Guss

0

Tôi không cho rằng bạn có thể chỉ cần điền vào một số thứ như 'a / an' như một bước bao gồm tất cả. Nếu không, bạn sẽ mắc phải các lỗi giả định như tất cả các từ có 'h', hãy tiếp tục bằng 'o' get 'an' thay vì 'a' như 'home' - (an home?). Về cơ bản, bạn sẽ kết thúc việc bao gồm logic của ngôn ngữ tiếng Anh hoặc ngẫu nhiên tìm thấy những trường hợp hiếm hoi khiến bạn trông ngu ngốc.


0

Kiểm tra xem một từ bắt đầu bằng nguyên âm hay phụ âm. "U" thường là một phụ âm và một nguyên âm ("yu"), do đó thuộc nhóm phụ âm cho mục đích của bạn.

Chữ "h" là viết tắt của gottal stop (một phụ âm) trong tiếng Pháp và các từ tiếng Pháp được sử dụng trong tiếng Anh. Bạn có thể lập danh sách các từ đó (trên thực tế, bao gồm "vinh dự", "danh dự" và "giờ" có thể là đủ) và tính chúng bắt đầu bằng các nguyên âm (vì tiếng Anh không nhận ra dấu chấm tròn).

Cũng tính "eu" như một phụ âm, v.v.

Nó không quá khó.


0

sự lựa chọn của một hoặc một phụ thuộc vào cách từ đó được phát âm. Bằng cách nhìn vào từ, bạn không nhất thiết phải biết cách phát âm chính xác của nó, ví dụ như Biệt ngữ hoặc chữ viết tắt, v.v. Một trong những cách có thể là sử dụng từ điển hỗ trợ âm vị và sử dụng thông tin âm vị được kết hợp với từ đó để xác định xem "a "hoặc" an "nên được sử dụng.


0

Tôi không thể chắc chắn rằng nó có thông tin thích hợp để phân biệt "a" và "an", nhưng cơ sở dữ liệu WordNet của Princeton tồn tại chính xác cho mục đích của các loại nhiệm vụ tương tự, vì vậy tôi nghĩ có khả năng là dữ liệu nằm trong đó . Nó có khoảng hàng chục nghìn từ và hàng trăm nghìn mối quan hệ giữa các từ đã nói (IIRC; Tôi không thể tìm thấy số liệu thống kê hiện tại trên trang web). Hãy cho nó một cái nhìn. Nó có thể tải xuống miễn phí.


0

Làm sao? Làm thế nào về khi? Lấy danh từ với mạo từ đính kèm. Yêu cầu nó trong một hình thức cụ thể.

Hỏi danh từ với mạo từ. Nhiều cơ sở mã MUD lưu trữ các mục dưới dạng thông tin bao gồm:

  • một hoặc nhiều từ khóa
  • một dạng ngắn
  • một hình thức dài

Dạng từ khóa có thể là "kiếm ngắn bị gỉ". Dạng ngắn gọn sẽ là "một thanh kiếm". Hình thức dài sẽ là "một thanh kiếm ngắn gỉ".

Bạn đang viết một dịch vụ Web "a so với an"? Lùi lại một bước và xem xét liệu bạn có thể tấn công rò rỉ này thêm ở phía ngược dòng hay không. Bạn có thể xây một con đập, nhưng trừ khi bạn ngăn không cho nó chảy, cuối cùng nó sẽ tràn.

Xác định mức độ quan trọng của điều này và như những người khác đã đề xuất, hãy chọn "nhanh nhưng thô" hoặc "đắt nhưng chắc chắn".


0

Quy tắc rất đơn giản. Nếu từ tiếp theo bắt đầu bằng một nguyên âm thì sử dụng 'an', nếu từ bắt đầu bằng phụ âm thì sử dụng 'a'. Điều khó khăn là việc phân loại nguyên âm và phụ âm của trường chúng tôi không hoạt động. 'H' trong 'vinh dự' là một nguyên âm, nhưng 'h' trong 'bệnh viện' là một phụ âm.

Thậm chí tệ hơn, một số từ như 'trung thực' bắt đầu bằng một nguyên âm hoặc một phụ âm tùy thuộc vào người đang nói chúng. Thậm chí tệ hơn, một số từ thay đổi tùy thuộc vào các từ xung quanh chúng đối với một số người nói.

Vấn đề chỉ bị ràng buộc bởi bao nhiêu thời gian và công sức bạn muốn dành cho nó. Bạn có thể viết một vài thứ bằng cách sử dụng 'aeiou' làm nguyên âm trong vài phút hoặc bạn có thể dành hàng tháng để phân tích ngôn ngữ về đối tượng mục tiêu của mình. Giữa chúng là một số lượng lớn các suy đoán sẽ đúng với một số người nói và sai đối với những người khác - nhưng bởi vì những người nói khác nhau có các quyết định khác nhau cho cùng một từ nên không thể luôn đúng bất kể bạn làm như thế nào. nó.


0

Cách tiếp cận lý tưởng là tìm một nơi nào đó trực tuyến có thể cung cấp cho bạn câu trả lời, tự động truy vấn chúng và lưu vào bộ nhớ cache các câu trả lời. Bạn có thể xác định hệ thống với vài trăm từ cho người mới bắt đầu.

(Tôi không biết về một nguồn trực tuyến như vậy, nhưng tôi sẽ không ngạc nhiên nếu có.)


0

Vì vậy, một giải pháp hợp lý là có thể thực hiện mà không cần tải xuống tất cả trên internet. Đây là những gì tôi đã làm:

Tôi nhớ rằng Google đã xuất bản dữ liệu thô của họ về tần số N-Gram của Google Sách tại đây . Vì vậy, tôi đã tải xuống các tệp 2 gam cho "a_" và "an". Đó là khoảng 26 hợp đồng biểu diễn nếu tôi nhớ chính xác. Từ đó, tôi tạo ra một danh sách các chuỗi mà chúng đứng trước mạo từ đối lập mà bạn mong đợi (nếu chúng ta mong đợi các nguyên âm có chữ "an"). Danh sách các từ cuối cùng mà tôi có thể lưu trữ dưới 7 kilobyte.


-2

Bạn sử dụng "a" bất cứ khi nào từ tiếp theo không phải là một nguyên âm? Và bạn sử dụng "an" bất cứ khi nào có một nguyên âm?

Như đã nói, bạn không thể chỉ thực hiện một biểu thức chính quy như "a \ s [a, e, i, o, u]. *"? Và sau đó thay thế nó bằng "an?"


Không, bởi vì quy tắc là về nguyên âm , không phải chữ cái nguyên âm . "Người dùng" bắt đầu bằng một nguyên âm, nhưng cách phát âm thì không.
Joris Groosman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.