NLP4J [003] Java로 자연 언어 처리와 품사 통계 처리를 사용하여 텍스트 분석을 해본다

색인으로 돌아가기 : [002] 구문 분석 > [003]품사 통계 처리 > [004] 구문 분석의 통계 처리

NLP4J를 사용하여 형태소 해석 결과와 간단한 통계 처리를 이용하여 텍스트 분석을 해 봅니다.

「형태소 해석」이나 「구문 해석」은 요리로 말하면 「부엌칼의 사용법」에 가까운 느낌입니다.
「형태소 해석」이나 「구문 해석」에 가세해 「통계 처리」를 넣으면 텍스트 분석=요리에 가까워지는 것은 아닐까 생각합니다.
여기서 통계 처리는 간단한 것을 이용합니다만, 기계 학습이나 복잡한 통계 처리를 넣어 보는 것도 좋다고 생각합니다.

이제 여기에 다음과 같은 문서가 있다고 가정합니다. 한 줄이 한 레코드입니다.
"Toyota", "ハイブリッドカーを作っています。"
"Toyota", "ハイブリッドカーを売っています。"
"Toyota", "自動車を作っています。"
"Toyota", "自動車を売っています。"
"Nissan", "EVを作っています。"
"Nissan", "EVを売っています。"
"Nissan", "自動車を売っています。"
"Nissan", "ルノーと提携しています。"
"Nissan", "軽自動車を売っています。"
"Honda", "自動車を作っています。"
"Honda", "自動車を売っています。"
"Honda", "バイクを作っています。"
"Honda", "バイクを売っています。"
"Honda", "軽自動車を売っています。"
"Honda", "軽自動車を作っています。"

문서를 'Toyota', 'Nissan', 'Honda'로 나누어 생각할 때 '특징 키워드'는 무엇입니까?
특징적인 키워드를 NLP4J를 사용하여 내 보겠습니다. (어려운 처리는 하지 않습니다)
통계 처리를 「SimpleDocumentIndex」클래스를 사용해 실시하고 있는 곳이 포인트입니다.

Maven


<dependency>
  <groupId>org.nlp4j</groupId>
  <artifactId>nlp4j</artifactId>
  <version>1.0.0.0</version>
</dependency>

코드1


public class HelloTextMiningMain1 {
    public static void main(String[] args) throws Exception {
// ドキュメントの用意(CSVを読み込むなどでも可)
        List<Document> docs = new ArrayList<Document>();
        {
            docs.add(createDocument("Toyota", "ハイブリッドカーを作っています。"));
            docs.add(createDocument("Toyota", "ハイブリッドカーを売っています。"));
            docs.add(createDocument("Toyota", "自動車を作っています。"));
            docs.add(createDocument("Toyota", "自動車を売っています。"));
            docs.add(createDocument("Nissan", "EVを作っています。"));
            docs.add(createDocument("Nissan", "EVを売っています。"));
            docs.add(createDocument("Nissan", "自動車を売っています。"));
            docs.add(createDocument("Nissan", "ルノーと提携しています。"));
            docs.add(createDocument("Nissan", "軽自動車を売っています。"));
            docs.add(createDocument("Honda", "自動車を作っています。"));
            docs.add(createDocument("Honda", "自動車を売っています。"));
            docs.add(createDocument("Honda", "バイクを作っています。"));
            docs.add(createDocument("Honda", "バイクを売っています。"));
            docs.add(createDocument("Honda", "軽自動車を売っています。"));
            docs.add(createDocument("Honda", "軽自動車を作っています。"));
        }

// 形態素解析アノテーター
        DocumentAnnotator annotator = new YJpMaAnnotator();
// 形態素解析処理
        annotator.annotate(docs);

// キーワードインデックス(統計処理)の用意
        Index index = new SimpleDocumentIndex();
// キーワードインデックス作成処理
        index.addDocuments(docs);
        {
            // 共起性の高いキーワードの取得
            List<Keyword> kwds = index.getKeywords("名詞", "item=Nissan");
            System.out.println("Keywords(名詞) for Nissan");
            for (Keyword kwd : kwds) {
                System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
            }
        }
        {
            // 共起性の高いキーワードの取得
            List<Keyword> kwds = index.getKeywords("名詞", "item=Toyota");
            System.out.println("Keywords(名詞) for Toyota");
            for (Keyword kwd : kwds) {
                System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
            }
        }
        {
            // 共起性の高いキーワードの取得
            List<Keyword> kwds = index.getKeywords("名詞", "item=Honda");
            System.out.println("Keywords(名詞) for Honda");
            for (Keyword kwd : kwds) {
                System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
            }
        }
    }

    static Document createDocument(String item, String text) {
        Document doc = new DefaultDocument();
        doc.putAttribute("item", item);
        doc.setText(text);
        return doc;
    }

}

Output


Keywords(名詞) for Nissan
3.0,EV
3.0,ルノー
3.0,提携
1.0,軽自動車
0.6,自動車
Keywords(名詞) for Toyota
3.8,ハイブリッド
3.8,カー
1.5,自動車
Keywords(名詞) for Honda
2.5,バイク
1.7,軽自動車
1.0,自動車

간단하네요!
이런 결과가 되었습니다!
인간의 감각과 맞습니까?

색인으로 돌아가기



NLP4J 소개 - [000] Java로 자연 언어 처리 Index

프로젝트 URL



htps //w w. nlp4j. rg/

좋은 웹페이지 즐겨찾기