Springブートにおける自然言語処理ツールキットHanLPの応用

この記事は合計782語、読書には約2分かかります!


概要

HanLPは、JavaベースのNLPツールキットで、実稼働環境で自然言語処理のアプリケーションを普及させるための一連のモデルとアルゴリズムで構成されています。 HanLPには、完全な機能、高性能、明確なアーキテクチャ、新しいコーパス、カスタマイズ可能な機能がありますので、この記事ではSpring BootとHanLPを組み合わせて使用​​することをお勧めします。

注:この記事はMy Personal Blog:CodeSheep・Program Sheepに初めて登場しました。 小さな駅にようこそ

この記事の脳マップは次のとおりです。


HanLPのデータとプログラムをダウンロードする

HanLPライブラリはコードからデータを分離するので、必要なデータパッケージとjarパッケージを別々にダウンロードする必要があります。


エンジニアリング工事

  • 通常のSpringブートプロジェクトを作成します。詳細はありません。
  • HanLPのデータと設定の紹介

ダウンロードが完了したら、最初にhanlp-release.zipアーカイブを解凍し、抽出されたHanLP jarパッケージをSpringブートプロジェクトにインポートしてから、HanLPに必要な設定とデータを配置する必要があります。

  1. プロジェクトのresourcesディレクトリに展開した後、 hanlp-release.zipアーカイブにhanlp.properties構成ファイルを置きます。
  2. その後、 data.zipアーカイブを解凍し、抽出されたデータディレクトリもresourcesディレクトリにあります(データパッケージのデータパッケージは非常に重要です。これはHanLPの作業に必要な辞書とモデルです)

IOアダプタを作成する

HanLPは、異なるプラットフォーム(HDFS、Redisなど)でHanLPを実行するためにcom.hankcs.hanlp.corpus.io.IIOAdapterインタフェースを実装できるようにするIOアダプタを提供します。デフォルトのIOアダプタIOAdapter = com.hankcs.hanlp.corpus.io.FileIOAdapterは通常のファイルシステムに基づいています。

次に、 IOAdapterクラスを書き換え、静的リソースファイルを読み書きするメソッドを使用して、HanLPが要求する辞書とモデルデータ(すなわち、リソースディレクトリに置かれたばかりのデータディレクトリ)を読み込みます。

public class ResourceFileIoAdapter implements IIOAdapter {
    @Override
    public InputStream open(String path) throws IOException {
        ClassPathResource resource = new ClassPathResource( path );
        InputStream is = new FileInputStream( resource.getFile() );
        return is;
    }

    @Override
    public OutputStream create(String path) throws IOException {
        ClassPathResource resource = new ClassPathResource( path );
        OutputStream os = new FileOutputStream( resource.getFile() );
        return os;
    }
}

次に、HanLP構成ファイルhanlp.propertiesを構成します。次の構成に変更する必要があります。

root=   // 我们不再需要这种指定data目录的方式
IOAdapter=cn.codesheep.springbt_hanlp_userdefine.config.ResourceFileIoAdapter // 指定自定义的IOAdapter

さて、プロジェクトがうまくいくので、いくつかのテストケーステストの経験を書いてみましょう!


実験的なテスト

ちょっと感じるためにいくつかの例を書いてください:

  • ワードセグメンテーション機能

@Test
public void testSegment() {
    System.out.println( HanLP.segment("www.codesheep.cn是一个技术博客!") );
}

単語セグメンテーションの結果は次のとおりです。

[www/nx, ./w, codesheep/nx, ./w, cn/nx, 是/vshi, 一个/mq, 技术/n, 博客/n, !/w]

各単語セグメントの後、 /nx/wなどはHanLPによって定義された品詞です。HanLPインターフェイスで詳細を知ることができます。

  • テキストの推奨

@Test
public void testSuggest() {
    Suggester suggester = new Suggester();
    String[] titleArray =
            (
                    "威廉王子发表演说 呼吁保护野生动物\n" +
                            "《时代》年度人物最终入围名单出炉 普京马云入选\n" +
                            "“黑格比”横扫菲:菲吸取“海燕”经验及早疏散\n" +
                            "日本保密法将正式生效 日媒指其损害国民知情权\n" +
                            "人工智能如今是非常火热的一门技术”"
            ).split("\\n");
    for (String title : titleArray)
    {
        suggester.addSentence(title);
    }

    System.out.println(suggester.suggest("机器学习", 1));   // 语义
    System.out.println(suggester.suggest("危机公共", 1));   // 字符
    System.out.println(suggester.suggest("mayun", 1));     // 拼音
}

3つのキーワードの推奨結果は次のとおりです。

机器学习  →  [人工智能如今是非常火热的一门技术”]
危机公共  →  [威廉王子发表演说 呼吁保护野生动物]
mayun     →  [《时代》年度人物最终入围名单出炉 普京马云入选]

  • キーワード抽出

@Test
public void testKeyExtract() {
    String content = "苹果公司(Apple Inc. )是美国一家高科技公司。由史蒂夫·乔布斯、斯蒂夫·沃兹尼亚克和罗·韦恩(Ron Wayne)等人于1976年4月1日创立," +
            "并命名为美国苹果电脑公司(Apple Computer Inc. ),2007年1月9日更名为苹果公司,总部位于加利福尼亚州的库比蒂诺。";
    List<String> keywordList = HanLP.extractKeyword(content, 5);
    System.out.println(keywordList);
}

抽出結果は次のとおりです。

[公司, 苹果, 美国, Inc, Apple]

私たちが独自のモデルや辞書などのデータを使って見つけた実験結果のいくつかを体験してください。また、ユーザーは特定のニーズに合わせてデータ、モデル、辞書などのデータをカスタマイズまたは変更することができます。パワフル。


ポストスクリプト

能力が限られているため、間違いや不備がある場合は、批判して修正し、一緒にコミュニケーションを学ぶようにしてください!



元のリンク