Uma biblioteca de processamento de linguagem e correção de erros rápida e de baixo resistência à resistência escrita em ferrugem. O NLPrule implementa uma abordagem baseada em regra e pesquisa para o PNL usando recursos da LanguageTool.
Instale: pip install nlprule
Usar:
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']Configuração recomendada:
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." )
) ;
} As versões nlprule e nlprule-build são mantidas em sincronia.
| | Regras de desambiguação | | | Regras gramaticais | | LT versão | tempo nlPrule | Tempo de LanguageTool | |
|---|---|---|---|---|---|
| Inglês | 843 (100%) | 3725 (~ 85%) | 5.2 | 1 | 1.7 - 2.0 |
| Alemão | 486 (100%) | 2970 (~ 90%) | 5.2 | 1 | 2.4 - 2.8 |
| Espanhol | Suporte experimental. Ainda não foi totalmente testado. |
Veja o problema de referência para obter detalhes.
Envie um PR para adicionar seu projeto!
Todo o crédito pelos recursos utilizados no NLPrule vai para o LinguageTool, que fez um esforço hercúleo para criar recursos de alta qualidade para correção de erros gramaticais e PNL mais ampla.
O NLPRULE está licenciado sob a licença do MIT ou a licença Apache-2.0, por sua opção.
Os binários NLPRULE ( *.bin ) são derivados da LinguageTool v5.2 e licenciados sob a licença LGPLV2.1. NLPRULE ESTATICAL e dinamicamente se vincula a esses binários. Sob LGPLV2.1 §6 (a), isso não tem nenhuma implicação na licença do próprio NLPrule.