Skip to main content

nifWrapper

The NLP Interchange Format (NIF) is a RDF/OWL-based format wich allows the spotting of words from text corpora and its metada such as part-of-speech tags, knowledge-base links, entity type, etc. Likewise other Python libraries (e.g., pynif), this library transform NIF data to python classes in order to better proccessing this information.

If you want to create/visualizate NIF data see NIFify in GitHub or a demo.

Example

Install first the library:

pip install nifwrapper

and then, try:

from nifwrapper import *


gold_ttl = '''
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix nif: <http://persistence.uni-leipzig.org/nlp2rdf/ontologies/nif-core#> .
@prefix itsrdf: <http://www.w3.org/2005/11/its/rdf#> .

<https://example.org/doc1>
        a nif:String , nif:Context  , nif:RFC5147String ;
        nif:isString """Kiev is an important industrial, scientific, educational and cultural center of Eastern Europe."""^^xsd:string ;
        nif:beginIndex "0"^^xsd:nonNegativeInteger ;
        nif:endIndex "95"^^xsd:nonNegativeInteger ;
        nif:sourceUrl <https://example.org/doc1> .

<https://example.org/doc1#char=0,95>
        a nif:String , nif:Context , nif:RFC5147String ;
        nif:isString """Kiev is an important industrial, scientific, educational and cultural center of Eastern Europe."""^^xsd:string ;
        nif:beginIndex "0"^^xsd:nonNegativeInteger ;
        nif:endIndex "95"^^xsd:nonNegativeInteger ;
        nif:broaderContext <https://example.org/doc1> .

<https://example.org/doc1#char=0,4>
        a nif:String , nif:Context , nif:Phrase , nif:RFC5147String ;
        nif:referenceContext <https://example.org/doc1#char=0,95> ;
        nif:context <https://example.org/doc1> ;
        nif:anchorOf """Kiev"""^^xsd:string ;
        nif:beginIndex "0"^^xsd:nonNegativeInteger ;
        nif:endIndex "4"^^xsd:nonNegativeInteger ;
        itsrdf:taIdentRef <https://en.wikipedia.org/wiki/Kiev> .

<https://example.org/doc1#char=33,43>
        a nif:String , nif:Context , nif:Phrase , nif:RFC5147String ;
        nif:referenceContext <https://example.org/doc1#char=0,95> ;
        nif:context <https://example.org/doc1> ;
        nif:anchorOf """scientific"""^^xsd:string ;
        nif:beginIndex "33"^^xsd:nonNegativeInteger ;
        nif:endIndex "43"^^xsd:nonNegativeInteger ;
        itsrdf:taIdentRef <https://en.wikipedia.org/wiki/Education> .

<https://example.org/doc1#char=45,56>
        a nif:String , nif:Context , nif:Phrase , nif:RFC5147String ;
        nif:referenceContext <https://example.org/doc1#char=0,95> ;
        nif:context <https://example.org/doc1> ;
        nif:anchorOf """educational"""^^xsd:string ;
        nif:beginIndex "45"^^xsd:nonNegativeInteger ;
        nif:endIndex "56"^^xsd:nonNegativeInteger ;
        itsrdf:taIdentRef <https://en.wikipedia.org/wiki/Education> .

<https://example.org/doc1#char=80,94>
        a nif:String , nif:Context , nif:Phrase , nif:RFC5147String ;
        nif:referenceContext <https://example.org/doc1#char=0,95> ;
        nif:context <https://example.org/doc1> ;
        nif:anchorOf """Eastern Europe"""^^xsd:string ;
        nif:beginIndex "80"^^xsd:nonNegativeInteger ;
        nif:endIndex "94"^^xsd:nonNegativeInteger ;
        itsrdf:taIdentRef <https://en.wikipedia.org/wiki/Eastern_Europe> .
'''

## ---- parsing
parser = NIFParser()
wrp_gold = parser.parser_turtle(gold_ttl)

## ---- displaying turtle format
print(wrp_gold.toString()) 

## --- Benchmark

# - inline NIF corpus creation
wrp_sys = NIFWrapper()
doc = NIFDocument("https://example.org/doc1")
#--
sent = NIFSentence("https://example.org/doc1#char=0,95")
sent.addAttribute("nif:isString","Kiev is an important industrial, scientific, educational and cultural center of Eastern Europe.","xsd:string")
sent.addAttribute("nif:broaderContext",["https://example.org/doc1"],"URI LIST")

#-- 
a1 = NIFAnnotation("https://example.org/doc1#char=0,4", "0", "4", ["https://en.wikipedia.org/wiki/Kiev"], ["dbo:Place"])
a1.addAttribute("nif:anchorOf","Kiev","xsd:string")
a1.addAttribute("ex:newPredicate","This is a test","xsd:string")
sent.pushAnnotation(a1)

#--
a2 = NIFAnnotation("https://example.org/doc1#char=45,56", "45", "56", ["https://en.wikipedia.org/wiki/University"], ["dbo:Organization"])
a2.addAttribute("nif:anchorOf","educational","xsd:string")
sent.pushAnnotation(a2)

#--
a3 = NIFAnnotation("https://example.org/doc1#char=80,94", "80", "94", ["https://en.wikipedia.org/wiki/Eastern_Europe"], ["dbo:Organization"])
a3.addAttribute("nif:anchorOf","Eastern Europe","xsd:string")
sent.pushAnnotation(a3)
#--
doc.pushSentence(sent)
wrp_sys.pushDocument(doc)


## Quality Evaluation
bmk = NIFBenchmark(wrp_sys, wrp_gold)
print(bmk.microF())

Metadata

Release files for nifwrapper 1.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nifwrapper 1.6.3
File Size Uploaded
nifwrapper-1.6.3.tar.gz 34.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nifwrapper 1.6.3
File Interpreter ABI Platform
nifwrapper-1.6.3-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 68.0 kB

Release files / nifwrapper-1.6.3.tar.gz

Download URL nifwrapper-1.6.3.tar.gz
Size 34.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5c084885b09bf882528d7b875e0ab2b6eeaab86f483484c32fdee95001ae0795
BLAKE2b-256 checksum
How to use checksums
5b351cbe5007046f0de96d9992c0d63402c53334bbf41bccd529205e73e93d60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.6.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.5

Release files / nifwrapper-1.6.3-py2.py3-none-any.whl

Download URL nifwrapper-1.6.3-py2.py3-none-any.whl
Size 33.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e916d3ef31b55df242bc5063a4aed3567c22d1037cd64bcaabc2d382b78e6133
BLAKE2b-256 checksum
How to use checksums
f5354f231f45abe636060008b7fbef0bc3d1037a5eda99e1a7a7be4027c256ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.6.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.5

Release history Release notifications | RSS feed

This release

1.6.3 This release

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.8

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page