nlprule
Release 0.6.4
Rust로 작성된 빠르고 자원이 낮은 자연 언어 처리 및 오류 수정 라이브러리. NLPRULE는 LangeGetool의 리소스를 사용하여 NLP에 대한 규칙 및 조회 기반 접근 방식을 구현합니다.
설치 : 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 버전 | nlprule 시간 | 언어 시간 | |
|---|---|---|---|---|---|
| 영어 | 843 (100%) | 3725 (~ 85%) | 5.2 | 1 | 1.7-2.0 |
| 독일 사람 | 486 (100%) | 2970 (~ 90%) | 5.2 | 1 | 2.4-2.8 |
| 스페인 사람 | 실험적 지원. 아직 완전히 테스트되지 않았습니다. |
자세한 내용은 벤치 마크 문제를 참조하십시오.
프로젝트를 추가하려면 PR을 제출하십시오!
NLPRULE에 사용 된 자원에 대한 모든 크레딧은 문법 오류 수정 및 더 넓은 NLP를위한 고품질 리소스를 만들기 위해 Herculean의 노력을 기울인 Langegetool로갑니다.
NLPRULE은 귀하의 옵션에 따라 MIT 라이센스 또는 Apache-2.0 라이센스에 따라 라이센스가 부여됩니다.
nlprule binaries ( *.bin )는 Langugetool v5.2에서 파생되며 LGPLV2.1 라이센스에 따라 라이센스가 부여됩니다. Nlprule은 이러한 바이너리와 정적으로 그리고 동적으로 연결됩니다. lgplv2.1 §6 (a)에 따라 이것은 nlprule 자체의 라이센스에 영향을 미치지 않습니다.