Source code

Revision control

Copy as Markdown

Other Tools

# phonetic suggestions by PHONE and optional ph field of dictionary words
# 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 <bjoern.jacke@gmx.de>
# - 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 <kevinatk@home.com>
# Converted from header to data file.
#
# 2007-08-23 László Németh <nemeth AT OOo>
# Add PHONE header and PHONE keywords
#
# version 1.1
PHONE 105
PHONE AH(AEIOUY)-^ *H
PHONE AR(AEIOUY)-^ *R
PHONE A(HR)^ *
PHONE A^ *
PHONE AH(AEIOUY)- H
PHONE AR(AEIOUY)- R
PHONE A(HR) _
PHONE BB- _
PHONE B B
PHONE CQ- _
PHONE CIA X
PHONE CH X
PHONE C(EIY)- S
PHONE CK K
PHONE COUGH^ KF
PHONE CC< C
PHONE C K
PHONE DG(EIY) K
PHONE DD- _
PHONE D T
PHONE É< E
PHONE EH(AEIOUY)-^ *H
PHONE ER(AEIOUY)-^ *R
PHONE E(HR)^ *
PHONE ENOUGH^$ *NF
PHONE E^ *
PHONE EH(AEIOUY)- H
PHONE ER(AEIOUY)- R
PHONE E(HR) _
PHONE FF- _
PHONE F F
PHONE GN^ N
PHONE GN$ N
PHONE GNS$ NS
PHONE GNED$ N
PHONE GH(AEIOUY)- K
PHONE GH _
PHONE GG9 K
PHONE G K
PHONE H H
PHONE IH(AEIOUY)-^ *H
PHONE IR(AEIOUY)-^ *R
PHONE I(HR)^ *
PHONE I^ *
PHONE ING6 N
PHONE IH(AEIOUY)- H
PHONE IR(AEIOUY)- R
PHONE I(HR) _
PHONE J K
PHONE KN^ N
PHONE KK- _
PHONE K K
PHONE LAUGH^ LF
PHONE LL- _
PHONE L L
PHONE MB$ M
PHONE MM M
PHONE M M
PHONE NN- _
PHONE N N
PHONE OH(AEIOUY)-^ *H
PHONE OR(AEIOUY)-^ *R
PHONE O(HR)^ *
PHONE O^ *
PHONE OH(AEIOUY)- H
PHONE OR(AEIOUY)- R
PHONE O(HR) _
PHONE PH F
PHONE PN^ N
PHONE PP- _
PHONE P P
PHONE Q K
PHONE RH^ R
PHONE ROUGH^ RF
PHONE RR- _
PHONE R R
PHONE SCH(EOU)- SK
PHONE SC(IEY)- S
PHONE SH X
PHONE SI(AO)- X
PHONE SS- _
PHONE S S
PHONE TI(AO)- X
PHONE TH @
PHONE TCH-- _
PHONE TOUGH^ TF
PHONE TT- _
PHONE T T
PHONE UH(AEIOUY)-^ *H
PHONE UR(AEIOUY)-^ *R
PHONE U(HR)^ *
PHONE U^ *
PHONE UH(AEIOUY)- H
PHONE UR(AEIOUY)- R
PHONE U(HR) _
PHONE V^ W
PHONE V F
PHONE WR^ R
PHONE WH^ W
PHONE W(AEIOU)- W
PHONE X^ S
PHONE X KS
PHONE Y(AEIOU)- Y
PHONE ZZ- _
PHONE 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