# phonetic_english.h - phonetic transformation rules for use with phonetic.c # Copyright (C) 2000 Björn Jacke # # This rule set is based on Lawrence Phillips original metaphone # algorithm with modifications made by Michael Kuhn in his # C implantation, more modifications by Björn Jacke when # converting the algorithm to a rule set and minor # touch ups by Kevin Atkinson # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License version 2.1 as published by the Free Software Foundation; # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Björn Jacke may be reached by email at bjoern.jacke@gmx.de # # Changelog: # # 2000-01-05 Björn Jacke # - first version with translation rules derived from # metaphone.cc distributed with aspell 0.28.3 # - "TH" is now representated as "@" because "0" is a # meta character # - removed TH(!vowel) --> T; always use TH --> # instead # - dropped "^AE" -> "E" (redundant) # - "ing" is transformed to "N", not "NK" # - "SCH(EO)" transforms to "SK" now # - added R --> SILENT if (after a vowel) and no (vowel or # "y" follows) like in "Marcy" or "abort" # - H is SILENT in RH at beginning of words # - H is SILENT if vowel leads and "Y" follows # - some ".OUGH.." --> ...F exceptions added # - "^V" transforms to "W" # 2000-01-07 Kevin Atkinson # Converted from header to data file. # version 1.1 AH(AEIOUY)-^ *H AR(AEIOUY)-^ *R A(HR)^ * A^ * AH(AEIOUY)- H AR(AEIOUY)- R A(HR) _ BB- _ B B CQ- _ CIA X CH X C(EIY)- S CK K COUGH^ KF CC< C C K DG(EIY) K DD- _ D T É< E EH(AEIOUY)-^ *H ER(AEIOUY)-^ *R E(HR)^ * ENOUGH^$ *NF E^ * EH(AEIOUY)- H ER(AEIOUY)- R E(HR) _ FF- _ F F GN^ N GN$ N GNS$ NS GNED$ N GH(AEIOUY)- K GH _ GG9 K G K H H IH(AEIOUY)-^ *H IR(AEIOUY)-^ *R I(HR)^ * I^ * ING6 N IH(AEIOUY)- H IR(AEIOUY)- R I(HR) _ J K KN^ N KK- _ K K LAUGH^ LF LL- _ L L MB$ M MM M M M NN- _ N N OH(AEIOUY)-^ *H OR(AEIOUY)-^ *R O(HR)^ * O^ * OH(AEIOUY)- H OR(AEIOUY)- R O(HR) _ PH F PN^ N PP- _ P P Q K RH^ R ROUGH^ RF RR- _ R R SCH(EOU)- SK SC(IEY)- S SH X SI(AO)- X SS- _ S S TI(AO)- X TH @ TCH-- _ TOUGH^ TF TT- _ T T UH(AEIOUY)-^ *H UR(AEIOUY)-^ *R U(HR)^ * U^ * UH(AEIOUY)- H UR(AEIOUY)- R U(HR) _ V^ W V F WR^ R WH^ W W(AEIOU)- W X^ S X KS Y(AEIOU)- Y ZZ- _ Z S #The rules in a different view: # # Exceptions: # # Beginning of word: "gn", "kn-", "pn-", "wr-" ----> drop first letter # "Aebersold", "Gnagy", "Knuth", "Pniewski", "Wright" # # Beginning of word: "x" ----> change to "s" # as in "Deng Xiaopeng" # # Beginning of word: "wh-" ----> change to "w" # as in "Whalen" # Beginning of word: leading vowels are transformed to "*" # # "[crt]ough" and "enough" are handled separately because of "F" sound # # # A --> A at beginning # _ otherwise # # B --> B unless at the end of word after "m", as in "dumb", "McComb" # # C --> X (sh) if "-cia-" or "-ch-" # S if "-ci-", "-ce-", or "-cy-" # SILENT if "-sci-", "-sce-", or "-scy-", or "-cq-" # K otherwise, including in "-sch-" # # D --> K if in "-dge-", "-dgy-", or "-dgi-" # T otherwise # # E --> A at beginnig # _ SILENT otherwise # # F --> F # # G --> SILENT if in "-gh-" and not at end or before a vowel # in "-gn" or "-gned" or "-gns" # in "-dge-" etc., as in above rule # K if before "i", or "e", or "y" if not double "gg" # # K otherwise (incl. "GG"!) # # H --> SILENT if after vowel and no vowel or "Y" follows # or after "-ch-", "-sh-", "-ph-", "-th-", "-gh-" # or after "rh-" at beginning # H otherwise # # I --> A at beginning # _ SILENT otherwise # # J --> K # # K --> SILENT if after "c" # K otherwise # # L --> L # # M --> M # # N --> N # # O --> A at beginning # _ SILENT otherwise # # P --> F if before "h" # P otherwise # # Q --> K # # R --> SILENT if after vowel and no vowel or "Y" follows # R otherwise # # S --> X (sh) if before "h" or in "-sio-" or "-sia-" # SK if followed by "ch(eo)" (SCH(EO)) # S otherwise # # T --> X (sh) if "-tia-" or "-tio-" # 0 (th) if before "h" # silent if in "-tch-" # T otherwise # # U --> A at beginning # _ SILENT otherwise # # V --> V if first letter of word # F otherwise # # W --> SILENT if not followed by a vowel # W if followed by a vowel # # X --> KS # # Y --> SILENT if not followed by a vowel # Y if followed by a vowel # # Z --> S