Проза — это библиотека обработки естественного языка (на данный момент только на английском языке) на чистом Go. Она поддерживает токенизацию, сегментацию, тегирование частей речи и извлечение именованных сущностей.
Более подробное описание производительности библиотеки можно найти здесь: «Представляем прозу v2.0.0: привносим NLP в Go».
$ go get github.com/jdkato/prose/v2
package main
import (
"fmt"
"log"
"github.com/jdkato/prose/v2"
)
func main() {
// Создать новый документ с конфигурацией по умолчанию:
doc, err := prose.NewDocument("Go — это открытый язык программирования, созданный в Google.")
if err != nil {
log.Fatal(err)
}
// Перебрать токены документа:
for _, tok := range doc.Tokens() {
fmt.Println(tok.Text, tok.Tag, tok.Label)
// Go NNP B-GPE
// is VBZ O
// an DT O
// ...
}
// Пройтись по именованным сущностям документа:
for _, ent := range doc.Entities() {
fmt.Println(ent.Text, ent.Label)
// Go GPE
// Google GPE
}
// Итерировать по предложениям документа:
for _, sent := range doc.Sentences() {
fmt.Println(sent.Text)
// Go — это открытый язык программирования, созданный в Google.
}
}
Процесс создания документа следует следующей последовательности шагов:
токенизация -> тегирование POS -> извлечение NE
\
сегментация
Каждый шаг может быть отключен (при условии, что последующие шаги не требуются) путем передачи соответствующего функционального параметра. Чтобы отключить извлечение именованной сущности, например, вы должны сделать следующее:
doc, err := prose.NewDocument(
"Go — это открытый язык программирования, созданный в Google.",
prose.WithExtraction(false))
«Проза» включает токенайзер, способный обрабатывать современный текст, включая промежутки без слов, показанные ниже.
Тип | Пример |
---|---|
Адреса электронной почты | Jane.Doe@example.com |
Хештеги | #trending |
Упоминания | @jdkato |
URL-адреса | https://github.com/jdkato/prose |
Смайлики |
:-) , >:( , o_0 и т. д. |
package main
import (
"fmt"
"log"
"github.com/jdkato/prose/v2"
)
func main() {
// Создать новый документ с конфигурацией по умолчанию:
doc, err := prose.NewDocument("@jdkato, go to http://example.com thanks :).")
if err != nil {
log.Fatal(err)
}
// Перебирать токены документа:
for _, tok := range doc.Tokens() {
fmt.Println(tok.Text, tok.Tag)
// @jdkato NN
// , ,
// go VB
// to TO
// http://example.com NN
// thanks NNS
// :) SYM
// . .
}
}
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 + проза: радикально эффективное машинное обучение на Go» (https://medium.com/@errata.ai/prodigy-prose-radically-efficient-machine-teaching-in-go-93389bf2d772).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )