名前解決

名前解決（）は、名前と実体の関係を明らかにすることであり、情報技術関連で以下のような意味を持つ。
プログラミング言語における名前解決.
プログラミング言語の式には、識別子が含まれる。式の意味は、その識別子が指す実体が何であるかに依存する。識別子がその文脈において何を指すのかを決定するアルゴリズムは、その言語の定義の一部である。
そのアルゴリズムの計算量は、その言語の洗練度合いによって変わってくる。例えば、アセンブリ言語での名前解決は単純な連想配列の参照だが、C++の名前解決には以下のような事柄が関係し、遥かに複雑である。
静的と動的.
プログラミング言語では、名前解決をコンパイル時に行うものと実行時に行うものがある。前者を「静的名前解決」、後者を「動的名前解決」と呼ぶ。
静的名前解決をするプログラミング言語としては、C言語、C++、Pascal などがある。動的名前解決をするプログラミング言語としては、LISP、Perl、Python、Tcl、PHP、REBOL などがある。
ネットワークにおける名前解決.
コンピュータネットワークにおける名前解決とは、抽象度の高いアドレス（ホスト名など）に対応する抽象度の低いアドレス（例えばIPアドレス）を見つけることである。名前解決を行うコマンドとして nslookup や host がある。詳しくは Domain Name System、OSI参照モデルを参照のこと。
他に、WindowsネットワークのWindows Internet Naming Service (WINS)、AppleTalkのName Binding Protocol (NBP)等がある。
テキストマイニングにおける名前解決.
テキストマイニングソフトウェアでの名前解決とは、自然言語のテキストを参照して、名詞が参照している人物や事物を具体的に特定することである。
単純なテキストでの名前解決.
例えば、次のような文章を解釈する場合を考える。
ジョンはエドワードにその本をあげた。そして彼は立ち上がり、ジョンに部屋に戻るよう呼びかけた。
この文章をソフトウェアが解釈する際、「彼」が「ジョン」なのか「エドワード」なのかを決定する必要がある。また、2つ目の文にある「ジョン」が1つ目の文の「ジョン」と同じ人物かどうかを決定しなければならない。これは自然言語処理全般に必要なことであり、日本語や英語に限った話ではない。
複数文書間の名前解決.
実際には、名前解決は複数文書間に適用されることが多い。例えば、長期間にわたる新聞記事を見てみると、「ジョージ・ブッシュ」という人名は第41代アメリカ大統領のジョージ・H・W・ブッシュを意味する場合と、第43代大統領のジョージ・W・ブッシュを意味する場合がある。このような同姓同名の人は無数にいるため、ある文章に出てくる人名が特定の「この人」だということを確定するには、人名以外の情報を必要とする。
実際には、明確に特定できるだけの情報がないことが多く、このような名前解決は（特にソフトウェアにとっては）非常に困難な問題である。文脈上の特定の手掛かりを利用する手法がいくつもあるが、万能の解決策は知られていない。