Быстрая библиотека обработки естественного языка с низким ресурсом и коррекции ошибок, написанная в ржавчине. NLPRULE реализует подход, основанный на правилах и поисках, к NLP с использованием ресурсов из LanguageTool.
Установка: pip install nlprule
Использовать:
from nlprule import Tokenizer , Rules
tokenizer = Tokenizer . load ( "en" )
rules = Rules . load ( "en" , tokenizer ) rules . correct ( "He wants that you send him an email." )
# returns: 'He wants you to send him an email.'
rules . correct ( "I can due his homework." )
# returns: 'I can do his homework.'
for s in rules . suggest ( "She was not been here since Monday." ):
print ( s . start , s . end , s . replacements , s . source , s . message )
# prints:
# 4 16 ['was not', 'has not been'] WAS_BEEN.1 Did you mean was not or has not been? for sentence in tokenizer . pipe ( "A brief example is shown." ):
for token in sentence :
print (
repr ( token . text ). ljust ( 10 ),
repr ( token . span ). ljust ( 10 ),
repr ( token . tags ). ljust ( 24 ),
repr ( token . lemmas ). ljust ( 24 ),
repr ( token . chunks ). ljust ( 24 ),
)
# prints:
# 'A' (0, 1) ['DT'] ['A', 'a'] ['B-NP-singular']
# 'brief' (2, 7) ['JJ'] ['brief'] ['I-NP-singular']
# 'example' (8, 15) ['NN:UN'] ['example'] ['E-NP-singular']
# 'is' (16, 18) ['VBZ'] ['be', 'is'] ['B-VP']
# 'shown' (19, 24) ['VBN'] ['show', 'shown'] ['I-VP']
# '.' (24, 25) ['.', 'PCT', 'SENT_END'] ['.'] ['O']Рекомендуемая настройка:
Cargo.toml
[ dependencies ]
nlprule = " <version> "
[ build-dependencies ]
nlprule-build = " <version> " # must be the same as the nlprule version! build.rs
fn main ( ) -> Result < ( ) , nlprule_build :: Error > {
println ! ( "cargo:rerun-if-changed=build.rs" ) ;
nlprule_build :: BinaryBuilder :: new (
& [ "en" ] ,
std :: env :: var ( "OUT_DIR" ) . expect ( "OUT_DIR is set when build.rs is running" ) ,
)
. build ( ) ?
. validate ( )
} src/main.rs
use nlprule :: { Rules , Tokenizer , tokenizer_filename , rules_filename } ;
fn main ( ) {
let mut tokenizer_bytes : & ' static [ u8 ] = include_bytes ! ( concat! (
env! ( "OUT_DIR" ) ,
"/" ,
tokenizer_filename! ( "en" )
) ) ;
let mut rules_bytes : & ' static [ u8 ] = include_bytes ! ( concat! (
env! ( "OUT_DIR" ) ,
"/" ,
rules_filename! ( "en" )
) ) ;
let tokenizer = Tokenizer :: from_reader ( & mut tokenizer_bytes ) . expect ( "tokenizer binary is valid" ) ;
let rules = Rules :: from_reader ( & mut rules_bytes ) . expect ( "rules binary is valid" ) ;
assert_eq ! (
rules . correct ( "She was not been here since Monday." , & tokenizer ) ,
String :: from ( "She was not here since Monday." )
) ;
} Версии nlprule и nlprule-build хранятся в синхронизации.
| | Правила устранения неоднозначности | | | Грамматические правила | | LT версия | НЛПРУЛЕ ВРЕМЯ | LanguageTool Time | |
|---|---|---|---|---|---|
| Английский | 843 (100%) | 3725 (~ 85%) | 5.2 | 1 | 1.7 - 2,0 |
| немецкий | 486 (100%) | 2970 (~ 90%) | 5.2 | 1 | 2.4 - 2.8 |
| испанский | Экспериментальная поддержка. Еще не полностью протестирован. |
Смотрите бланк -выпуск для деталей.
Пожалуйста, отправьте пиар, чтобы добавить свой проект!
Все кредиты за ресурсы, используемые в NLPRLE, отправляются в LanguageTool, которые предприняли геркулесовые усилия по созданию высококачественных ресурсов для коррекции грамматической ошибки и более широкого NLP.
NLPRULE лицензируется по лицензии MIT или лицензии Apache-2.0, по вашему варианту.
Двоирные файлы NLPRULE ( *.bin ) получены из LanguageTool V5.2 и лицензированы по лицензии LGPLV2.1. NLPRULE статически и динамически связывается с этими двоичными файлами. В соответствии с LGPLV2.1 §6 (a) это не имеет никаких последствий на лицензию самого NLPULE.