私は、ドキュメントや README のコピーを書くときと、変数や関数に名前を付けるコードを書くときの両方で、シソーラスを定期的に使用します。
私はオンライン類語辞典、特に thesaurus.com を使用していましたが、その経験が嫌いでした。結果は便利で非常によく整理されていますが、キーボードでの操作が難しく、特に結果が多数のページにまたがる場合には操作が遅くなります。
そこで、独自のシソーラスを作成しました。私はこれまで thesaurus.com を使用したよりもはるかに頻繁にそれを使用しています。機能は少ないですが、アクセスがはるかに速く、創造的なプロセスの中断も少なくなります。
ターミナル ウィンドウで、 th
に続いて単語を入力します。たとえば、 「attention 」という単語を検索するには、次のようにします。
![]() |
---|
th に注意を喚起する |
出力は、関連する単語とフレーズのリストで、列に編成され、上下にコンテキスト行があり、下部にナビゲーション オプションのリストが表示されます。
![]() |
---|
注目の検索結果 |
結果表示の最下行には、利用可能なアクションのリストが表示されます。アクションの最初の文字を入力してアクションを開始します (画面上で強調表示されています)。
データはシソーラス エントリとして編成されており、それぞれに関連する単語やフレーズのコレクションが含まれています。エントリは幹であり、関連する単語やフレーズは枝です。
デフォルトのビューはブランチ モードです。表示される単語は、ソース シソーラスのエントリの後にリストされている単語やフレーズです。トランクモードに切り替えると、その単語を含むエントリが表示されます。これは、分岐のない例で最も明確に示されています。
![]() |
---|
トリガーはエントリのない単語です |
「トリガー」という単語のシソーラス エントリはありません。ただし、トリガーという単語は、他のエントリの枝としてシソーラスに含まれています。トランクモードに切り替えて、 trigger を含むエントリを表示します。
![]() |
---|
トリガーが関連語となる単語の一覧 |
このプログラムはパッケージとしては利用できません。ソース コードをダウンロードしてプロジェクトをビルドする必要があります。次の手順により、機能するシソーラスが作成されます。
git clone https://www.github.com/cjungmann/th.git
cd th
make
make thesaurus.db
プログラムを試して気に入るかどうかを確認してください。ビルド ディレクトリの外部で使用できるようにインストールする場合は、次のコマンドを呼び出します。
sudo make install
プログラムが必要ないと判断した場合は、プログラムを削除するのは簡単です。
プログラムをインストールしている場合は、まずsudo make uninstall
でアンインストールしてください
これにより、プログラム、サポート ファイル、およびサポート ファイルがインストールされていたディレクトリが削除されます。
プログラムがインストールされていない場合は、複製されたディレクトリを削除しても安全です。
次の資料は、主に開発者の興味を引くものです。
プロジェクトの構築は簡単ですが、他のソフトウェアに依存します。以下は依存関係のリストです。そのうちの最初の依存関係 (Berkeley データベース) のみが何らかの介入を必要とする可能性があります。以下の項目 3 と 4 は、ビルド ディレクトリの下のサブディレクトリにダウンロードされ、そこで見つかったコードは実行可能ファイルに静的にリンクされているため、環境には影響しません。
プロジェクト内の B ツリー データベースには、 db バージョン 5 (Berkeley データベース) が必要です。 git を使用している場合は、 FreeBSDでもこれがすでにあるはずです。そうでない場合は、古いバージョンのdbしか含まれていません。適切なdb が見つからない場合、Make はメッセージを表示してすぐに終了します。その場合、パッケージ マネージャーを使用してdb をインストールするか、ソースからビルドするかはユーザー次第です。
git は、いくつかの依存関係をダウンロードするために使用されます。プロジェクトの依存関係はgit を使用せずに直接ダウンロードできますが、そのためにはソース ファイルに関する文書化されていない知識が必要ですが、 make がgit を使用して依存関係をダウンロードできる場合、この問題は回避されます。
readargs は、コマンド ライン引数を処理する私のプロジェクトの 1 つです。このプロジェクトはまだthによって使用されていますが、 th が動作するためにこのライブラリをインストールする必要はなくなりました。番目のMakefile は、 readargsプロジェクトをサブディレクトリにダウンロードしてビルドし、代わりに静的ライブラリを使用します。
c_patterns は私のプロジェクトの 1 つで、ライブラリを必要とせずに再利用可能なコードを管理する実験です。 Makefile はgit を使用してプロジェクトをダウンロードし、ビルドに含めるsrcディレクトリ内のいくつかの c_patterns モジュールへのリンクを作成します。
このプロジェクトは (少なくとも私にとっては) 有益ではありますが、実験でもあります。ここでの私の目標の 1 つは、メイクファイル作成スキルを向上させることです。私が行ったビルドとインストールの決定の中には、ベスト プラクティスではないものや、経験豊富な開発者から嫌われるものさえあるかもしれません。 th
インストールするとシステムに何が起こるか心配な場合は、以下の情報があなたの決定に役立つことを願っています。
予想どおり、 make は番目のアプリケーションをコンパイルします。おそらく、型破りに、 make は時間がかかる可能性のある他のタスクを実行します。
C モジュールのリポジトリをダウンロードし、 srcディレクトリにリンクを作成してそれらのいくつかを使用します。
依存関係を確認するためにconfigure
使用する代わりに、 makefileは欠落している依存関係を検出すると、役立つメッセージを表示して即座に終了します。
The Gutenberg Project からパブリック ドメインの moby シソーラスをダウンロードしてインポートします。これにより、アプリケーションの単語データベースが設定されます。
Abandoned単語数データベースをダウンロードしてインポートします。この目的は、長いリストから単語を見つけやすくするために、代替の並べ替え順序を提供することです。これは現在機能していません。アルファベット順のリストを読むことの利点が、より一般的に使用される単語を最初に配置しようとする疑わしい利点よりもはるかに大きいことがわかっているため、これに戻るかどうかはわかりません。その理由は、単語の長いリストに単語がランダムに散在していない場合、検討対象の単語を追跡するのがはるかに簡単だからです。
出力の整理に役立つ Moby 品詞リスト リソースがあることに気づきました。興味深いものではありますが、アルファベット順の並べ替えが出力の使用にどの程度役立つかを考えると、役立つかどうかはわかりません。見てみましょう。
このプロジェクトを開始したとき、いくつかの目標がありました。
Berkeley Databaseについてもっと経験を積んでおきたいと思いました。このキーストア データベースは、 gitやsqliteなど、他の多くのアプリケーションを支えます。
c_patterns プロジェクト モジュールのいくつかを使用して練習したいと思いました。これらのモジュールを実際のプロジェクトで使用すると、設計上の欠陥や不足している機能を理解するのに役立ちます。私は使用します
columnize.c を使用して列形式の出力を生成します。
出力の下部にある最小限のオプション メニューについては、 prompter.c、
get_keypress.c はエコーされないキー押下用で、主にprompter.cによって使用されます。
Gnu Linux と BSD の両方で動作するビルド プロセスの設計を練習したいと思いました。これには、欠落しているモジュール (特に、BSD に古すぎるライブラリが含まれるdb ) の特定と、再設計された条件付き処理が含まれます。
Windows は BSD よりも Linux と大きく異なるため、私は Windows をターゲットにしていません。また、多くの Windows ユーザーがコマンド ライン アプリケーションに快適に移行できるとは思えないからです。
Berkeley Database ( bdb ) は興味深いデータベース製品のようです。その低レベル C ライブラリのアプローチは、私が 1990 年代後半に使用していた FairCom DB エンジンに似ているように思えます。
Berkeley Database は、Linux および BSD ディストリビューションの一部であり、フットプリントが小さいため、魅力的です。データを詳細に計画することができ、C 言語のアイデアを検討する口実になります。
このプロジェクトは、コマンドラインのシソーラスおよび辞書を目的とした my Words プロジェクトの再始動です。このプロジェクトは私にとってbdbを初めて使用したものでした。そのため、私の作業の一部は少し不器用です。 bdbコードを最初から設計し直したいと考えています。ここで適用できるWordsプロジェクトからテキスト解析コードの一部をコピーします。
シソーラスと辞書である大規模なデータセットを使用して、Queue データ アクセス方法と Recno データ アクセス方法のパフォーマンスの違いもテストしたいと考えています。固定長レコードの先頭と末尾を計算できるようになり、Queue が高速化されることを期待しています。特定の可変長レコードのレコード番号によってアクセスするには、ファイルの場所を検索する必要があります。パフォーマンスの違いを測定して、その利点と可変長レコードのストレージ効率を比較検討したいと思います。
シソーラスのパブリック ドメイン ソースは 2 つあります。
私が Moby シソーラスを使用しているのは、その構成がはるかに単純で、解析が容易であるためです。問題は、同義語が多数あり、整理されていないため、適切な同義語を検索するときにスキャンするのがはるかに困難であることです。
多くの単語には何百もの同義語があるため、リストをざっと調べて適切な単語を見つけるのは非常に困難です。使いやすくするために、リストにいくつかの順序を付けてみます。このツールをしばらく使用した結果、アルファベット順が最適であるという結論に達しました。アルファベット順のリスト内の単語に戻るのがはるかに簡単です。他の語順を選択するオプションを削除しました。
最も簡単に分類できるのは単語の使用頻度です。使用頻度の高い単語から低い単語まで列挙する予定です。おそらく、より人気のある単語が最良の選択である一方、あまり人気のない単語は時代遅れになる可能性があります。
単語の頻度についてはいくつかの情報源があります。私が使用しているものは、Google ngrams に基づいています。
自然言語コーパス データ: 美しいデータ
私は Norvig のソースをあまり勉強していないので、ナンセンスな部分がたくさんある可能性があります。よりサニタイズされたリストを持つ可能性のある別のソースとして、hackerb9/gwordlist があります。 Norvig が問題になる場合は、この代替リストを覚えておき、それを置き換えることができるようにしたいと思います。
この部分はもう試行されません。ソース データの解釈は、辞書の固有の表記を認識して Unicode 文字に変換する必要があるため、複雑になります。これらの問題の多くは解決しましたが、まだ多くの問題が残っています。 Makefile にはこの情報をダウンロードするための手順がまだ含まれており、これに戻りたい場合に備えてリポジトリにはいくつかの変換スクリプトが保存されています。
同義語を品詞 (名詞、動詞、形容詞など) ごとにグループ化することも役立つ可能性があります。最初の問題は、各単語が表す品詞を識別することです。 2 番目の問題はプレゼンテーションです。単語を表示する前にユーザーに品詞を選択させるインターフェイスがあれば、より良いですが、プログラムするのは難しくなります。
パブリックドメインの電子辞書
最初の試みは、GNU Collaborative International Dictionary of English (GCIDE) を使用することです。これは、ウェブスターの古いバージョン (1914 年) に基づいており、より現代の編集者によっていくつかの言葉が追加されています。