ハイフネーションアルゴリズム
ハイフネーションアルゴリズム(英: hyphenation algorithm)は、単語の途中で改行できる箇所を決定するためのルールセットである。この規則によって、例えば、“impeachment”(弾劾)という語を途中で区切らねばならない(=分綴)とき、適切な分綴である“impeach-ment” や “im-peachment” が示されることが期待される。
分綴規則は、言語に方言があることによって複雑さが増している。例えば、英語にはイギリス英語やアメリカ英語などがある。前者では単語を区切る際に、音節よりも語源を重視する傾向にあり、後者はその逆である[1]。つまり、“knowledge” という単語は、“know-ledge”(語源を重視した分綴、イギリス英語)とも “knowl-edge”(音節を重視した分綴、アメリカ英語)とも区切られうる。
また、同一のスペリングをする単語でも、発音が異なることで分綴位置が異なることがある[2]。例えば、“present” という単語は、「贈り物」という意味の名詞や、「出席している」「存在している」という意味の形容詞としては、“pres-ent ([prézənt])” と分綴され、「贈る」という意味の動詞としては、“pre-sent ([prizént])” と分綴される[2]。
さらに、ハイフネーション規則には無数の例外も存在し、問題をより複雑にしている。
ハイフネーション規則についての経験則は、"On Hyphenation – Anarchy of Pedantry" に詳しい。種々のアルゴリズム的アプローチの中では、TeXで実装されたものが広く使われている。このアルゴリズムは、“Computers and Typesetting” の最初の2巻と、フランシス・マーク・リャン (Francis Mark Liang) の博士論文によって文書化されている[3]。
TeXにおいて
[編集]TeXのハイフネーションアルゴリズムは、ライブラリの形で、Haskell, JavaScript, Python をはじめとする多くのプログラミング言語で使えるようになっている。TeXにおいては、\showhyphens
のコマンドが使える。
LaTeXにおいては、ハイフネーションの修正が、以下のコマンドによって利用者自身の手によって行える:
\hyphenation{words}
\hyphenationコマンドでは、スペースで区切った語の羅列によって、語の改行可能な位置を宣言する。改行可能な位置は、“-” によって示される。以下に例を示す:
\hyphenation{fortran er-go-no-mic}
上のコマンドでは、“fortran” の語が途中で改行されることを禁止し、“ergonomic” の語がハイフンをはさんだ位置のいずれかでハイフネーションされ得ることを宣言している[4]。
参考文献
[編集]- 大名力『英語の文字・綴り・発音のしくみ』(初版)研究社、2014年10月31日。ISBN 978-4-327-40164-1。
出典
[編集]- ^ 大名力 2014, p. 114.
- ^ a b 大名力, 2014 & pp-97-98.
- ^ Liang, Franklin Mark. "Word Hy-phen-a-tion by Com-pu-ter". PhD dissertation, Stanford University Department of Computer Science. Report number STAN-CS-83-977, August 1983.
- ^ \hyphenation on Hypertext Help with LaTeX
- “On Hyphenation - Anarchy of Pedantry”. PC Update, the magazine of Melbourne PC User Group, Australia. March 10, 2005時点のオリジナルよりアーカイブ。October 6, 2005閲覧。
- “TeX hyphenation patterns”. TeX Users Group (TUG) (2016年1月23日). 2018年1月28日閲覧。
- “TeX-Hyphen”. Comprehensive Perl Archive Network. October 18, 2005閲覧。
- “text-hyphen”. RubyForge. October 18, 2005閲覧。
- “Knuth-Liang hyphenation for the PostScript language”. anastigmatix.net. October 6, 2005閲覧。
- “TeXHyphenator-J: TeX Hyphenator in Java”. September 14, 2006閲覧。
- “Hyphenation in Python, using Frank Liang's algorithm”. July 10, 2007閲覧。
- “Hyphenator.js-Hyphenation in JavaScript, using Frank Liang's algorithm”. July 28, 2015閲覧。
- “Tex::Hyphen - Perl implementation of TeX82 Hyphenation rules”. 2018年1月28日閲覧。
- “phpSyllable - PHP implementation of Frank Liang's algorithm”. 2018年1月28日閲覧。
- “Hyphenator - JavaScript implementation of Frank Liang's algorithm”. 2018年1月28日閲覧。