prose เป็นห้องสมุดการประมวลผลภาษาธรรมชาติ (ภาษาอังกฤษเท่านั้นในขณะนี้) ใน Pure Go รองรับโทเค็นการแบ่งส่วนการติดแท็กส่วนหนึ่งของการพูดและการสกัดแบบมีชื่อ
คุณสามารถค้นหาข้อมูลสรุปโดยละเอียดเพิ่มเติมเกี่ยวกับประสิทธิภาพของห้องสมุดได้ที่นี่: แนะนำ prose v2.0.0: นำ NLP ไป
$ go get github.com/jdkato/prose/v2 package main
import (
"fmt"
"log"
"github.com/jdkato/prose/v2"
)
func main () {
// Create a new document with the default configuration:
doc , err := prose . NewDocument ( "Go is an open-source programming language created at Google." )
if err != nil {
log . Fatal ( err )
}
// Iterate over the doc's tokens:
for _ , tok := range doc . Tokens () {
fmt . Println ( tok . Text , tok . Tag , tok . Label )
// Go NNP B-GPE
// is VBZ O
// an DT O
// ...
}
// Iterate over the doc's named-entities:
for _ , ent := range doc . Entities () {
fmt . Println ( ent . Text , ent . Label )
// Go GPE
// Google GPE
}
// Iterate over the doc's sentences:
for _ , sent := range doc . Sentences () {
fmt . Println ( sent . Text )
// Go is an open-source programming language created at Google.
}
}กระบวนการสร้างเอกสารปฏิบัติตามลำดับขั้นตอนต่อไปนี้:
tokenization -> POS tagging -> NE extraction
segmentation
แต่ละขั้นตอนอาจถูกปิดใช้งาน (สมมติว่าไม่จำเป็นต้องมีขั้นตอนในภายหลัง) โดยผ่าน ตัวเลือกการทำงาน ที่เหมาะสม เพื่อปิดการใช้งานการสกัดแบบมีชื่อเช่นคุณต้องทำสิ่งต่อไปนี้:
doc , err := prose . NewDocument (
"Go is an open-source programming language created at Google." ,
prose . WithExtraction ( false )) prose รวมถึง tokenizer ที่สามารถประมวลผลข้อความที่ทันสมัยรวมถึงตัวละครที่ไม่ใช่คำที่แสดงด้านล่าง
| พิมพ์ | ตัวอย่าง |
|---|---|
| ที่อยู่อีเมล | [email protected] |
| แฮชแท็ก | #trending |
| การกล่าวถึง | @jdkato |
| URL | https://github.com/jdkato/prose |
| อิโมติคอน | :-) , >:( , o_0 , ฯลฯ |
package main
import (
"fmt"
"log"
"github.com/jdkato/prose/v2"
)
func main () {
// Create a new document with the default configuration:
doc , err := prose . NewDocument ( "@jdkato, go to http://example.com thanks :)." )
if err != nil {
log . Fatal ( err )
}
// Iterate over the doc's tokens:
for _ , tok := range doc . Tokens () {
fmt . Println ( tok . Text , tok . Tag )
// @jdkato NN
// , ,
// go VB
// to TO
// http://example.com NN
// thanks NNS
// :) SYM
// . .
}
} prose รวมถึงหนึ่งในกลุ่มประโยคที่แม่นยำที่สุดที่มีอยู่ตามกฎทองที่สร้างขึ้นโดยนักพัฒนาของ pragmatic_segmenter
| ชื่อ | ภาษา | ใบอนุญาต | GRS (ภาษาอังกฤษ) | GRS (อื่น ๆ ) | ความเร็ว† |
|---|---|---|---|---|---|
| ผู้แบ่งแยก | ทับทิม | มิกซ์ | 98.08% (51/52) | 100.00% | 3.84 s |
| ร้อยแก้ว | ไป | มิกซ์ | 75.00% (39/52) | N/A | 0.96 s |
| ชั้นเชิง | ทับทิม | GNU GPLV3 | 65.38% (34/52) | 48.57% | 46.32 s |
| Opennlp | ชวา | APLV2 | 59.62% (31/52) | 45.71% | 1.27 s |
| Standford Corenlp | ชวา | GNU GPLV3 | 59.62% (31/52) | 31.43% | 0.92 s |
| แยกออกจากกัน | งูหลาม | APLV2 | 55.77% (29/52) | 37.14% | N/A |
| พังค์ | งูหลาม | APLV2 | 46.15% (24/52) | 48.57% | 1.79 s |
| SRX ภาษาอังกฤษ | ทับทิม | GNU GPLV3 | 30.77% (16/52) | 28.57% | 6.19 s |
| scapel | ทับทิม | GNU GPLV3 | 28.85% (15/52) | 20.00% | 0.13 s |
†การทดสอบดั้งเดิมดำเนินการโดยใช้ MacBook Pro 3.7 GHz quad-core Intel Xeon E5 ที่ใช้งาน 10.9.5 ในขณะที่
proseถูกจับเวลาโดยใช้ MacBook Pro 2.9 GHz Intel Core i7 ที่รัน 10.13.3
package main
import (
"fmt"
"strings"
"github.com/jdkato/prose/v2"
)
func main () {
// Create a new document with the default configuration:
doc , _ := prose . NewDocument ( strings . Join ([] string {
"I can see Mt. Fuji from here." ,
"St. Michael's Church is on 5th st. near the light." }, " " ))
// Iterate over the doc's sentences:
sents := doc . Sentences ()
fmt . Println ( len ( sents )) // 2
for _ , sent := range sents {
fmt . Println ( sent . Text )
// I can see Mt. Fuji from here.
// St. Michael's Church is on 5th st. near the light.
}
} prose รวมถึง tagger ตามข้อความ "เร็วและแม่นยำ" ของ Textblob ด้านล่างคือการเปรียบเทียบประสิทธิภาพของมันกับการใช้งานของ Tagger เดียวกันของ NLTK ใน Treebank Corpus:
| ห้องสมุด | ความแม่นยำ | เฉลี่ย 5-run (วินาที) |
|---|---|---|
| nltk | 0.893 | 7.224 |
prose | 0.961 | 2.538 |
(ดู scripts/test_model.py สำหรับข้อมูลเพิ่มเติม)
รายการทั้งหมดของแท็ก POS ที่รองรับได้รับด้านล่าง
| ติดแท็ก | คำอธิบาย |
|---|---|
( | วงเล็บรอบซ้าย |
) | วงเล็บรอบขวา |
, | เครื่องหมายจุลภาค |
: | ลำไส้ใหญ่ |
. | ระยะเวลา |
'' | เครื่องหมายปิดใบเสนอราคา |
`` | เครื่องหมายเปิดใบเสนอราคา |
# | ป้ายหมายเลข |
$ | สกุลเงิน |
CC | การประสานงาน |
CD | หมายเลขพระคาร์ดินัล |
DT | เครื่องกำหนด |
EX | มีอยู่ที่นั่น |
FW | คำต่างประเทศ |
IN | การรวมกันรองหรือบุพบท |
JJ | คุณศัพท์ |
JJR | คำคุณศัพท์เปรียบเทียบ |
JJS | คำคุณศัพท์ยอดเยี่ยม |
LS | รายการรายการ |
MD | คำกริยาช่วยกริยาช่วย |
NN | คำนามเอกพจน์หรือมวล |
NNP | คำนามเอกพจน์ที่เหมาะสม |
NNPS | คำนามพหูพจน์ที่เหมาะสม |
NNS | คำนามพหูพจน์ |
PDT | ผู้กำหนดล่วงหน้า |
POS | การสิ้นสุดความเป็นเจ้าของ |
PRP | สรรพนามส่วนตัว |
PRP$ | สรรพนาม |
RB | คำวิเศษณ์ |
RBR | คำวิเศษณ์เปรียบเทียบ |
RBS | คำวิเศษณ์ยอดเยี่ยม |
RP | คำวิเศษณ์อนุภาค |
SYM | เครื่องหมาย |
TO | ไม่มีที่ติไป |
UH | คำอุทาน |
VB | กริยารูปแบบฐาน |
VBD | คำกริยาอดีตกาล |
VBG | คำกริยา, gerund หรือคำกริยาปัจจุบัน |
VBN | คำกริยากริยาในอดีต |
VBP | คำกริยาบุคคลที่ไม่ใช่คนที่ไม่ได้เป็นเอกพจน์ |
VBZ | คำกริยาบุคคลที่ 3 เอกพจน์ |
WDT | wh-determiner |
WP | wh-pronoun เป็นส่วนตัว |
WP$ | wh-pronoun, เป็นเจ้าของ |
WRB | wh-adverb |
prose v2.0.0 รวมถึงแพ็คเกจอันดีกว่าของ V1.0.0 ซึ่งสามารถระบุผู้คน ( PERSON ) และหน่วยงานทางภูมิศาสตร์/การเมือง ( GPE ) โดยค่าเริ่มต้น
package main
import (
"github.com/jdkato/prose/v2"
)
func main () {
doc , _ := prose . NewDocument ( "Lebron James plays basketball in Los Angeles." )
for _ , ent := range doc . Entities () {
fmt . Println ( ent . Text , ent . Label )
// Lebron James PERSON
// Los Angeles GPE
}
} อย่างไรก็ตามในความพยายามที่จะทำให้คุณสมบัตินี้มีประโยชน์มากขึ้นเราได้ทำให้มันตรงไปตรงมาเพื่อฝึกอบรมโมเดลของคุณเองสำหรับกรณีการใช้งานเฉพาะ ดู Prodigy + prose : การสอนเครื่องจักรที่มีประสิทธิภาพอย่างรุนแรง ในการ สอน