Blackstone ist ein Spacy-Modell und eine Bibliothek für die Verarbeitung langer Form, unstrukturierter Rechtstext. Blackstone ist ein experimentelles Forschungsprojekt des Incorporated Council of Law Reporting für England und Wales 'Forschungslabor ICLR & D. Blackstone wurde von Daniel Hoadley geschrieben.
Warum bauen wir Blackstone?
Was ist das Besondere an Blackstone?
Beobachtungen und andere Dinge, die erwähnenswert sind
Installation
Installieren Sie die Bibliothek
Installieren Sie das Blackstone -Modell
Über das Modell
Die Pipeline
Erkenntnis der genannten Entfernung
Textkategoriser
Verwendung
Anwenden des NER -Modells
Visualisierung von Entitäten
Anwenden des Textkategorismodells
Benutzerdefinierte Pipeline -Erweiterungen
Abkürzung und Langform-Definitionsauflösung
Zusammensetzung der Fallreferenzerkennung
Gesetzgebung Linker
Satzsegmentierer
In den letzten Jahren hat sich die Aktivität an der Schnittstelle von Recht und Technologie ansteigt. In Großbritannien hat sich jedoch der überwältigende Großteil dieser Aktivitäten in Anwaltskanzleien und anderen kommerziellen Kontexten stattgefunden. Die Folge davon ist, dass trotz der unendlichen Entwicklung im Bereich der Rechtsformatik fast keine der Forschungsergebnisse auf Open-Source-Basis zur Verfügung gestellt wird.
Darüber hinaus hat sich die Hauptschwerpunkte der Forschung im britischen Rechtsinformatikbereich (ob offen oder geschlossen) auf die Entwicklung von NLP-Anträgen zur Automatisierung von Verträgen und anderen Rechtsdokumenten konzentriert, die transaktional sind. Dies ist verständlich, da die wichtigsten Wohltäter der legalen NLP -Forschung in Großbritannien Anwaltskanzleien sind, und Anwaltskanzleien fällt es tendenziell nicht schwer, die Transaktionsdokumentation in die Hände zu bekommen, die als Schulungsdaten genutzt werden können.
Wie wir sehen, ist das Problem, dass sich die legale NLP -Forschung in Großbritannien auf kommerzielle Anwendungen konzentriert hat und es sich lohnt, die Investitionen in die Entwicklung legaler NLP -Forschung in Bezug auf andere rechtliche Texte wie Urteile, wissenschaftliche Artikel, Skelettargumente und Plädoyer zu tätigen.
Notiz! Es wird dringend empfohlen, Blackstone in eine virtuelle Umgebung zu installieren! Weitere Informationen zu virtuellen Umgebungen finden Sie hier. Blackstone sollte mit Python 3.6 und höher kompatibel sein.
Um Blackstone zu installieren, folgen Sie folgenden Schritten:
Der erste Schritt besteht darin, die Bibliothek zu installieren, die derzeit eine Handvoll benutzerdefinierter Spacy -Komponenten enthält. Installieren Sie die Bibliothek wie so:
pip install blackstone
Der zweite Schritt besteht darin, das Spacy -Modell zu installieren. Installieren Sie das Modell wie SO:
pip install https://blackstone-model.s3-eu-west-1.amazonaws.com/en_blackstone_proto-0.0.1.tar.gz
Wenn Sie Blackstone entwickeln, können Sie wie SO aus der Quelle installieren:
pip install --editable .
pip install -r dev-requirements.txt
Dies ist die allererste Veröffentlichung von Blackstone und das Modell wird am besten als Prototyp angesehen. Es ist rau an den Rändern und stellt den ersten Schritt in einem größeren laufenden Programm der Open -Source -Forschung zu NLP über juristische Texte dar, die von ICLR & D durchgeführt werden.
Damit ist hier ein kurzer Überblick darüber, was im Protomodell passiert.
Das in dieser Version enthaltene Protomodell enthält die folgenden Elemente in seiner Pipeline:
Aufgrund einer Mangel an markierten Daten zur Bezeichnung und Abhängigkeitsausbildung für Rechtstext wurden die Komponenten von tokenizer , tagger und parser Pipeline aus dem Modell von Spact's en_core_web_sm entnommen. Im Großen und Ganzen scheinen diese Komponenten einen anständigen Job zu machen, aber es wäre gut, diese Komponenten mit benutzerdefinierten Trainingsdaten irgendwann in der Zukunft noch einmal zu besuchen.
Die ner und textcat -Komponenten sind benutzerdefinierte Komponenten, die speziell für Blackstone geschult sind.
Die NER -Komponente des Blackstone -Modells wurde geschult, um die folgenden Entitätstypen zu erkennen:
| Enthülle | Name | Beispiele |
|---|---|---|
| CaSename | Fallnamen | zB Smith gegen Jones in Re Jones in Jones ' Fall |
| ZITAT | Zitate (einzigartige Identifikatoren für gemeldete und nicht gemeldete Fälle) | zB (2002) 2 Cr App R 123 |
| INSTRUMENT | Geschriebene Rechtsinstrumente | zB dem Diebstahl von 1968, Europäische Konvent über Menschenrechte, CPR |
| BESTIMMUNG | Einheit innerhalb eines schriftlichen Rechtsinstruments | ZB Abschnitt 1, Art 2 (3) |
| GERICHT | Gericht oder Tribunal | zB Berufungsgericht, Upper Tribunal |
| RICHTER | Verweise auf Richter | z. B. J, Lord Bingham von Cornhill |
Diese Veröffentlichung von Blackstone wird auch mit einem Textkategoriser ausgestattet. Im Gegensatz zu der NER -Komponente (die trainiert wurde, um Token und eine Reihe von Interessenszahlen zu identifizieren), klassifiziert der Textkategorator längere Textspannen wie Sätze.
Der Textkategoriker wurde geschult, um Text nach einer von fünf gegenseitig ausschließlichen Kategorien zu klassifizieren, die wie folgt sind:
| Katze | Beschreibung |
|---|---|
| AXIOM | Der Text scheint ein gut etabliertes Prinzip zu postulieren |
| ABSCHLUSS | Der Text scheint eine Feststellung, Festlegung, Entschlossenheit oder Schlussfolgerung zu machen |
| AUSGABE | Der Text scheint ein Problem oder eine Frage zu diskutieren |
| Legal_test | Der Test scheint einen rechtlichen Test zu erörtern |
| Uncat | Der Text fällt nicht in eine der vier oben genannten Kategorien |
Hier ist ein Beispiel dafür, wie das Modell auf einen Text aus dem Urteil des Abteilungsgerichts in R (Miller) gegen Außenminister des Abteilungsgerichts angewendet wird, um die Europäische Union zu verlassen (Birnie Intervening) [2017] UKSC 5; [2018] AC 61:
import spacy
# Load the model
nlp = spacy . load ( "en_blackstone_proto" )
text = """ 31 As we shall explain in more detail in examining the submission of the Secretary of State (see paras 77 and following), it is the Secretary of State’s case that nothing has been done by Parliament in the European Communities Act 1972 or any other statute to remove the prerogative power of the Crown, in the conduct of the international relations of the UK, to take steps to remove the UK from the EU by giving notice under article 50EU for the UK to withdraw from the EU Treaty and other relevant EU Treaties. The Secretary of State relies in particular on Attorney General v De Keyser’s Royal Hotel Ltd [1920] AC 508 and R v Secretary of State for Foreign and Commonwealth Affairs, Ex p Rees-Mogg [1994] QB 552; he contends that the Crown’s prerogative power to cause the UK to withdraw from the EU by giving notice under article 50EU could only have been removed by primary legislation using express words to that effect, alternatively by legislation which has that effect by necessary implication. The Secretary of State contends that neither the ECA 1972 nor any of the other Acts of Parliament referred to have abrogated this aspect of the Crown’s prerogative, either by express words or by necessary implication.
"""
# Apply the model to the text
doc = nlp ( text )
# Iterate through the entities identified by the model
for ent in doc . ents :
print ( ent . text , ent . label_ )
> >> European Communities Act 1972 INSTRUMENT
> >> article 50 EU PROVISION
>> > EU Treaty INSTRUMENT
> >> Attorney General v De Keyser ’ s Royal Hotel Ltd CASENAME
> >> [ 1920 ] AC 508 CITATION
>> > R v Secretary of State for Foreign and Commonwealth Affairs , Ex p Rees - Mogg CASENAME
>> > [ 1994 ] QB 552 CITATION
> >> article 50 EU PROVISION Spacy -Versand mit einem hervorragenden Satz von Visualisierern, einschließlich eines Visualers für NER, prognostizieren. Blackstone wird mit einer benutzerdefinierten Farbpalette geliefert, mit der die Entitäten auf dem Quelltext bei der Verwendung von Unfällen einfacher zu differenzieren können.
"""
Visualise entities using spaCy's displacy visualiser.
Blackstone has a custom colour palette: `from blackstone.displacy_palette import ner_displacy options`
"""
import spacy
from spacy import displacy
from blackstone . displacy_palette import ner_displacy_options
nlp = spacy . load ( "en_blackstone_proto" )
text = """
The applicant must satisfy a high standard. This is a case where the action is to be tried by a judge with a jury. The standard is set out in Jameel v Wall Street Journal Europe Sprl [2004] EMLR 89, para 14:
“But every time a meaning is shut out (including any holding that the words complained of either are, or are not, capable of bearing a defamatory meaning) it must be remembered that the judge is taking it upon himself to rule in effect that any jury would be perverse to take a different view on the question. It is a high threshold of exclusion. Ever since Fox’s Act 1792 (32 Geo 3, c 60) the meaning of words in civil as well as criminal libel proceedings has been constitutionally a matter for the jury. The judge’s function is no more and no less than to pre-empt perversity. That being clearly the position with regard to whether or not words are capable of being understood as defamatory or, as the case may be, non-defamatory, I see no basis on which it could sensibly be otherwise with regard to differing levels of defamatory meaning. Often the question whether words are defamatory at all and, if so, what level of defamatory meaning they bear will overlap.”
18 In Berezovsky v Forbes Inc [2001] EMLR 1030, para 16 Sedley LJ had stated the test this way:
“The real question in the present case is how the courts ought to go about ascertaining the range of legitimate meanings. Eady J regarded it as a matter of impression. That is all right, it seems to us, provided that the impression is not of what the words mean but of what a jury could sensibly think they meant. Such an exercise is an exercise in generosity, not in parsimony.”
"""
doc = nlp ( text )
# Call displacy and pass `ner_displacy_options` into the option parameter`
displacy . serve ( doc , style = "ent" , options = ner_displacy_options )Das produziert etwas, das so aussieht:
Der Textkategoriker von Blackstone generiert eine vorhergesagte Kategorisierung für einen doc . Die textcat -Pipeline -Komponente wurde so konzipiert, dass sie auf einzelne Sätze angewendet werden soll, anstatt auf ein einzelnes Dokument, das aus vielen Sätzen besteht.
import spacy
# Load the model
nlp = spacy . load ( "en_blackstone_proto" )
def get_top_cat ( doc ):
"""
Function to identify the highest scoring category
prediction generated by the text categoriser.
"""
cats = doc . cats
max_score = max ( cats . values ())
max_cats = [ k for k , v in cats . items () if v == max_score ]
max_cat = max_cats [ 0 ]
return ( max_cat , max_score )
text = """
It is a well-established principle of law that the transactions of independent states between each other are governed by other laws than those which municipal courts administer.
It is, however, in my judgment, insufficient to react to the danger of over-formalisation and “judicialisation” simply by emphasising flexibility and context-sensitivity.
The question is whether on the facts found by the judge, the (or a) proximate cause of the loss of the rig was “inherent vice or nature of the subject matter insured” within the meaning of clause 4.4 of the Institute Cargo Clauses (A).
"""
# Apply the model to the text
doc = nlp ( text )
# Get the sentences in the passage of text
sentences = [ sent . text for sent in doc . sents ]
# Print the sentence and the corresponding predicted category.
for sentence in sentences :
doc = nlp ( sentence )
top_category = get_top_cat ( doc )
print ( f" " { sentence } " { top_category } n " )
> >> "In my judgment, it is patently obvious that cats are a type of dog." ( 'CONCLUSION' , 0.9990500807762146 )
> >> "It is a well settled principle that theft is wrong." ( 'AXIOM' , 0.556410014629364 )
> >> "The question is whether on the facts found by the judge, the (or a) proximate cause of the loss of the rig was “inherent vice or nature of the subject matter insured” within the meaning of clause 4.4 of the Institute Cargo Clauses (A)." ( 'ISSUE' , 0.5040785074234009 )Neben dem Kernmodell verfügt diese Protofreisetzung von Blackstone mit drei benutzerdefinierten Komponenten:
AbbreviationDetector() in [Skrispacy] und löst eine abgekürzte Form zu seiner Langform -Definition, z. B. ECtHR -> European Court of Human Rights .CASENAME und CITATION die Verschmelzung eines CITATION an den übergeordneten CASENAME ermöglichen.Es ist nicht ungewöhnlich, dass Autoren von Rechtsdokumenten langatmige Begriffe abkürzen, die anstelle der langwiegenden Langform durch den Rest des Dokuments verwendet werden. Zum Beispiel,
Der Europäische Gerichtshof für Menschenrechte ("EChr") ist das Gericht, das letztendlich für die Anwendung des Europäischen Konvents über Menschenrechte ("EMRK") verantwortlich ist.
Die Abkürzungserkennungskomponente in Blackstone versucht, dies zu beheben, indem sie eine immer leicht modifizierte Version von Scispacy's AbbreviationDetector() implementiert (was selbst eine Implementierung des in diesem Artikel dargelegten Ansatz ist: https://psb.stanford.edu/psb-online/proceedings/psb03/Sschwartz.pdf). Unsere Implementierung hat immer noch einige Probleme, aber ein Beispiel für die Verwendung ist wie folgt:
import spacy
from blackstone . pipeline . abbreviations import AbbreviationDetector
nlp = spacy . load ( "en_blackstone_proto" )
# Add the abbreviation pipe to the spacy pipeline.
abbreviation_pipe = AbbreviationDetector ( nlp )
nlp . add_pipe ( abbreviation_pipe )
doc = nlp ( 'The European Court of Human Rights ("ECtHR") is the court ultimately responsible for applying the European Convention on Human Rights ("ECHR").' )
print ( "Abbreviation" , " t " , "Definition" )
for abrv in doc . _ . abbreviations :
print ( f" { abrv } t ( { abrv . start } , { abrv . end } ) { abrv . _ . long_form } " )
> >> "ECtHR" ( 7 , 10 ) European Court of Human Rights
>> > "ECHR" ( 25 , 28 ) European Convention on Human Rights Die Komponente der zusammengesetzten Fallreferenzkennung in Blackstone ist so konzipiert, dass sie CITATION mit ihren übergeordneten CASENAME -Unternehmen heiraten.
Die Gerichtsbarkeiten des Common Law beziehen sich typischerweise auf Fallreferenzen durch eine Kopplung eines Namens (typischerweise abgeleitet aus den Namen der Parteien im Fall) und eindeutig eindeutig, um festzustellen, wo der Fall gemeldet wurde, wie SO:
Regina gegen Horncastle [2010] 2 AC 373
Das NER -Modell von Blackstone versucht separat, die Einheiten CASENAME und CITATION zu identifizieren. Es ist jedoch möglicherweise nützlich (insbesondere im Zusammenhang mit der Informationsextraktion), diese Entitäten als Paare herauszuziehen.
CompoundCases() wendet ein benutzerdefiniertes Rohr nach dem NER an und identifiziert CASENAME / CITATION in zwei Szenarien:
import spacy
from blackstone . pipeline . compound_cases import CompoundCases
nlp = spacy . load ( "en_blackstone_proto" )
compound_pipe = CompoundCases ( nlp )
nlp . add_pipe ( compound_pipe )
text = "As I have indicated, this was the central issue before the judge. On this issue the defendants relied (successfully below) on the decision of the High Court in Gelmini v Moriggia [1913] 2 KB 549. In Jones' case [1915] 1 KB 45, the defendant wore a hat."
doc = nlp ( text )
for compound_ref in doc . _ . compound_cases :
print ( compound_ref )
> >> Gelmini v Moriggia [ 1913 ] 2 KB 549
>> > Jones ' case [ 1915 ] 1 KB 45 Die Linker von Blackstone versucht, einen Verweis auf eine PROVISION auf das übergeordnete INSTRUMENT zu koppeln, indem das NER -Modell verwendet wird, um das Vorhandensein eines INSTRUMENT zu identifizieren und dann durch den Abhängigkeitsbaum zu navigieren, um die untergeordnete Bestimmung zu identifizieren.
Sobald Blackstone eine PROVISION identifiziert hat: INSTRUMENT , wird versucht, Ziel -URLs sowohl für die Bestimmung als auch für das Instrument zur Gesetzgebung zu generieren.gov.uk.
import spacy
from blackstone . utils . legislation_linker import extract_legislation_relations
nlp = spacy . load ( "en_blackstone_proto" )
text = "The Secretary of State was at pains to emphasise that, if a withdrawal agreement is made, it is very likely to be a treaty requiring ratification and as such would have to be submitted for review by Parliament, acting separately, under the negative resolution procedure set out in section 20 of the Constitutional Reform and Governance Act 2010. Theft is defined in section 1 of the Theft Act 1968"
doc = nlp ( text )
relations = extract_legislation_relations ( doc )
for provision , provision_url , instrument , instrument_url in relations :
print ( f" n { provision } t { provision_url } t { instrument } t { instrument_url } " )
> >> section 20 http : // www . legislation . gov . uk / ukpga / 2010 / 25 / section / 20 Constitutional Reform and Governance Act 2010 http : // www . legislation . gov . uk / ukpga / 2010 / 25 / contents
> >> section 1 http : // www . legislation . gov . uk / ukpga / 1968 / 60 / section / 1 Theft Act 1968 http : // www . legislation . gov . uk / ukpga / 1968 / 60 / contentsBlackstone wird mit einem benutzerdefinierten regiert-basierten Satzsegmentierer geliefert, der eine Reihe von Merkmalen angeht, die in juristischen Texten innewohnt, die dazu neigen, die Segmentierungsregeln für die Segmentierung von der Box zu verblüffen.
Dieses Verhalten kann erweitert werden, indem optional eine Liste der Match-Muster im spacy-Stil überschritten wird, die die Erkennung von Satzgrenzen innerhalb von Übereinstimmungen explizit verhindert.
import spacy
from blackstone . pipeline . sentence_segmenter import SentenceSegmenter
from blackstone . rules import CITATION_PATTERNS
nlp = spacy . load ( "en_blackstone_proto" )
# add the Blackstone sentence_segmenter to the pipeline before the parser
sentence_segmenter = SentenceSegmenter ( nlp . vocab , CITATION_PATTERNS )
nlp . add_pipe ( sentence_segmenter , before = "parser" )
doc = nlp (
"""
The courts in this jurisdiction will enforce those commitments when it is legally possible and necessary to do so (see, most recently, R. (on the application of ClientEarth) v Secretary of State for the Environment, Food and Rural Affairs (No.2) [2017] P.T.S.R. 203 and R. (on the application of ClientEarth) v Secretary of State for Environment, Food and Rural Affairs (No.3) [2018] Env. L.R. 21). The central question in this case arises against that background.
"""
)
for sent in doc . sents :
print ( sent . text )Wir möchten uns bei den folgenden Personen/Organisationen bedanken, die uns (direkt oder indirekt) geholfen haben, diesen Prototyp aufzubauen.