ใช้ CoreNLP ผ่าน Clojure

ผมเริ่มหัดเขียน Java มาตั้งแต่ราว ๆ พ.ศ. ๒๕๔๐ แต่ว่าจนกระทั่งเดี๋ยวนี้ก็ยังรู้สึกว่ายังเขียนไม่เป็น แต่ CoreNLP ที่เอามาใช้ตัดคำก็ได้ บอกชนิดของคำก็ได้ วิเคราะห์ความสัมพันธ์ของคำในประโยคก็ได้ ดันเขียนด้วย Java

การไปเรียกใช้หลัก ๆ มี 2 วิธีคือเรียกตรง ๆ กับเรียกผ่าน HTTP server ผมไม่อยากเรียกผ่าน HTTP server เพราะขี้เกียจไป start server ก่อน ทางออกก็เลยเป็นการเรียกใช้ผ่าน Clojure

API แบบเรียกตรง ๆ ของ CoreNLP มี  2 แบบคือ Simple กับอีกแบบคือ Advance (มั้ง) แน่นอนผมเลือก Simple

;; Copyright (c) 2016, Vee Satayamas
;; All rights reserved.
;;
;; License: GPLv3 http://www.gnu.org/licenses/gpl-3.0.html

'{:dependencies [[org.clojure/clojure "1.8.0"]
                 [edu.stanford.nlp/stanford-corenlp "3.6.0"]
                 [edu.stanford.nlp/stanford-corenlp "3.6.0" :classifier "models"]
                 [com.google.protobuf/protobuf-java "2.6.1"]
                 [org.slf4j/slf4j-log4j12 "1.7.21"]]}

(require '[clojure.pprint :refer [pprint]])
(import edu.stanford.nlp.simple.Document)

(let [doc (Document. "I saw her. She met me.")]
  (pprint (.sentences doc)))

อันนี้เรียกด้วย inlein นะครับ เพราะว่าผมยัด dependencies มาไว้ใน source code เลย ส่วนที่วุ่นวายที่สุดก็คือ dependencies นี่ล่ะครับ ที่เหลือก็แค่สร้าง object ของ Document ขึ้นมา แล้วเรียก method .sentences มันก็คืน instance ของ “ประโยค” ออกมาให้เลย

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s