Skip to content

Instantly share code, notes, and snippets.

@kuk
Last active August 10, 2018 08:06
Show Gist options
  • Save kuk/40344ddc6ef9a6807c349610c4a1e4ca to your computer and use it in GitHub Desktop.
Save kuk/40344ddc6ef9a6807c349610c4a1e4ca to your computer and use it in GitHub Desktop.
.ipynb_checkpoints/
PullentiPython/
news.txt
import sys
sys.path.append('PullentiPython')
import json
from collections import namedtuple, Counter, defaultdict
from random import seed, sample
from ipymarkup import (
Span as MarkupSpan,
AsciiMarkup,
LineMarkup,
LineLabelMarkup
)
from tqdm import tqdm as log_progress
def load_lines(path):
with open(path) as file:
for line in file:
yield line.rstrip('\n')
def format_json(data):
return json.dumps(data, indent=2, ensure_ascii=False)
def show_json(data):
print(format_json(data))
##########
#
# UTILS
#
#########
from collections import OrderedDict
def assert_type(item, types):
if not isinstance(item, types):
if not isinstance(types, tuple):
types = [types]
raise TypeError('expected {types}, got {type}'.format(
types=' or '.join(_.__name__ for _ in types),
type=type(item).__name__
))
def assert_not_empty(item):
if len(item) == 0:
raise ValueError('expected not empty')
def assert_one_of(item, items):
if item not in items:
raise ValueError('{item!r} not in {items!r}'.format(
item=item,
items=items
))
def jsonify(record):
data = OrderedDict()
for key in record.__attributes__:
value = getattr(record, key)
if isinstance(value, list):
value = [jsonify(_) for _ in value]
elif isinstance(value, Record):
value = value.as_json
data[key] = value
return data
class Record(object):
__attributes__ = []
def __eq__(self, other):
return (
type(self) == type(other)
and all(
(getattr(self, _) == getattr(other, _))
for _ in self.__attributes__
)
)
def __ne__(self, other):
return not self == other
def __iter__(self):
return (getattr(self, _) for _ in self.__attributes__)
def __hash__(self):
return hash(tuple(self))
@property
def as_json(self):
return jsonify(self)
def __repr__(self):
name = self.__class__.__name__
args = ', '.join(
'{key}={value!r}'.format(
key=_,
value=getattr(self, _)
)
for _ in self.__attributes__
)
return '{name}({args})'.format(
name=name,
args=args
)
def _repr_pretty_(self, printer, cycle):
name = self.__class__.__name__
if cycle:
printer.text('{name}(...)'.format(name=name))
else:
printer.text('{name}('.format(name=name))
keys = self.__attributes__
size = len(keys)
if size:
with printer.indent(4):
printer.break_()
for index, key in enumerate(keys):
printer.text(key + '=')
value = getattr(self, key)
printer.pretty(value)
if index < size - 1:
printer.text(',')
printer.break_()
printer.break_()
printer.text(')')
##############
#
# LANG
#
##########
from pullenti.morph.MorphLang import MorphLang
from pullenti.morph.Morphology import Morphology
from pullenti.morph.Explanatory import Explanatory
RU = 'RU'
UA = 'UA'
BY = 'BY'
EN = 'EN'
IT = 'IT'
KZ = 'KZ'
LANGS = {RU, UA, BY, EN, IT, KZ}
DEFAULT_LANGS = {RU, EN}
def langs_to_raw(langs):
raw = MorphLang()
for lang in langs:
lang = getattr(MorphLang, lang)
raw |= lang
return raw
def raw_to_langs(raw):
langs = str(raw) # RU;EN
langs = (
langs.split(';')
if langs
else []
)
for lang in langs:
assert_one_of(lang, LANGS)
return set(langs)
def loaded_langs():
raw = Morphology._get_loaded_languages()
return raw_to_langs(raw)
def unload_langs(langs):
raw = langs_to_raw(langs)
Morphology.unload_languages(raw)
Explanatory.unload_languages(raw)
def load_langs(langs):
raw = langs_to_raw(langs)
Morphology.load_languages(raw)
Explanatory.load_languages(raw)
def set_langs(langs):
langs = set(langs)
assert_not_empty(langs)
for lang in langs:
assert_one_of(lang, LANGS)
missing = loaded_langs() - langs
unload_langs(missing)
load_langs(langs)
##########
#
# PREPROCESS
#
#############
from pullenti.morph.internal.UnicodeInfo import UnicodeInfo
VALID = {_.uni_char for _ in UnicodeInfo.ALL_CHARS}
def preprocess(text):
return ''.join(_ for _ in text if _ in VALID)
###########
#
# PROCESSOR
#
###########
from pullenti.ner.Sdk import Sdk
from pullenti.ner.Processor import Processor as RawProcessor
from pullenti.ner.SourceOfAnalysis import SourceOfAnalysis
from pullenti.ner.ProcessorService import ProcessorService
from pullenti.ner.money.MoneyAnalyzer import MoneyAnalyzer
from pullenti.ner.date.DateAnalyzer import DateAnalyzer
from pullenti.ner.geo.GeoAnalyzer import GeoAnalyzer
from pullenti.ner._org.OrganizationAnalyzer import OrganizationAnalyzer
from pullenti.ner.person.PersonAnalyzer import PersonAnalyzer
PERSON = PersonAnalyzer.ANALYZER_NAME
ORGANIZATION = OrganizationAnalyzer.ANALYZER_NAME
GEO = GeoAnalyzer.ANALYZER_NAME
DATE = DateAnalyzer.ANALYZER_NAME
MONEY = MoneyAnalyzer.ANALYZER_NAME
ANALYZERS = {
PERSON,
ORGANIZATION,
GEO,
DATE,
MONEY
}
def select_analyzers(selected):
for analyzer in ProcessorService._get_analyzers():
if analyzer.name in selected:
analyzer = analyzer.clone()
if analyzer is not None: # TODO why would it happen?
yield analyzer
class Processor(Record):
__attributes__ = ['analyzers']
def __init__(self, analyzers):
for analyzer in analyzers:
assert_one_of(analyzer, ANALYZERS)
self.analyzers = analyzers
langs = loaded_langs() or DEFAULT_LANGS
raw = langs_to_raw(langs)
# TODO maybe cache inits
Sdk.initialize(raw)
self.raw = RawProcessor()
for analyzer in select_analyzers(self.analyzers):
self.raw.add_analyzer(analyzer)
def __call__(self, text):
sofa = SourceOfAnalysis(text)
raw = self.raw.process(sofa)
return convert_result(raw)
###########
#
# REFERENT
#
#############
from pullenti.ner.Referent import Referent as RawReferent
from pullenti.ner.person.PersonReferent import PersonReferent as RawPersonReferent
from pullenti.ner.person.PersonPropertyReferent import PersonPropertyReferent as RawPersonPropertyReferent
from pullenti.ner.person.PersonIdentityReferent import PersonIdentityReferent as RawPersonIdentityReferent
from pullenti.ner._org.OrganizationReferent import OrganizationReferent as RawOrganizationReferent
from pullenti.ner.geo.GeoReferent import GeoReferent as RawGeoReferent
from pullenti.ner.date.DateReferent import DateReferent as RawDateReferent
from pullenti.ner.date.DateRangeReferent import DateRangeReferent as RawDateRangeReferent
from pullenti.ner.money.MoneyReferent import MoneyReferent as RawMoneyReferent
from pullenti.ner.phone.PhoneReferent import PhoneReferent as RawPhoneReferent
class Slot(Record):
__attributes__ = ['key', 'value']
def __init__(self, key, value):
self.key = key
self.value = value
class Referent(Record):
__attributes__ = ['label', 'slots']
raw = None
def __init__(self, label, slots=()):
self.label = label
self.slots = slots
def slot_property(key):
@property
def get_first_slot(referent):
for slot in referent.slots:
if slot.key == key:
return slot.value
return get_first_slot
def raw_property(method):
@property
def get_raw_property(referent):
raw = referent.raw
return method.fget(raw)
return get_raw_property
class PersonReferent(Referent):
sex = slot_property(RawPersonReferent.ATTR_SEX)
indentity = slot_property(RawPersonReferent.ATTR_IDENTITY)
firstname = slot_property(RawPersonReferent.ATTR_FIRSTNAME)
middlename = slot_property(RawPersonReferent.ATTR_MIDDLENAME)
lastname = slot_property(RawPersonReferent.ATTR_LASTNAME)
nickname = slot_property(RawPersonReferent.ATTR_NICKNAME)
attribute = slot_property(RawPersonReferent.ATTR_ATTR)
age = raw_property(RawPersonReferent.age)
born = slot_property(RawPersonReferent.ATTR_BORN)
die = slot_property(RawPersonReferent.ATTR_DIE)
contact = slot_property(RawPersonReferent.ATTR_CONTACT)
iddoc = slot_property(RawPersonReferent.ATTR_IDDOC)
class PersonPropertyReferent(Referent):
name = raw_property(RawPersonPropertyReferent.name)
attribute = slot_property(RawPersonPropertyReferent.ATTR_ATTR)
ref = slot_property(RawPersonPropertyReferent.ATTR_REF)
higher = raw_property(RawPersonPropertyReferent.ATTR_HIGHER)
class PersonIdentityReferent(Referent):
type = raw_property(RawPersonIdentityReferent.typ)
number = raw_property(RawPersonIdentityReferent.number)
date = slot_property(RawPersonIdentityReferent.ATTR_DATE)
org = slot_property(RawPersonIdentityReferent.ATTR_ORG)
state = raw_property(RawPersonIdentityReferent.state)
address = raw_property(RawPersonIdentityReferent.address)
class OrganizationReferent(Referent):
type = slot_property(RawOrganizationReferent.ATTR_TYPE)
number = raw_property(RawOrganizationReferent.number)
eponym = slot_property(RawOrganizationReferent.ATTR_EPONYM)
higher = raw_property(RawOrganizationReferent.higher)
owner = raw_property(RawOrganizationReferent.owner)
geo = slot_property(RawOrganizationReferent.ATTR_GEO)
kladr = slot_property(RawOrganizationReferent.ATTR_KLADR)
misc = slot_property(RawOrganizationReferent.ATTR_MISC)
profile = slot_property(RawOrganizationReferent.ATTR_PROFILE)
inn = raw_property(RawOrganizationReferent.inn)
ogrn = raw_property(RawOrganizationReferent.ogrn)
names = raw_property(RawOrganizationReferent.names)
profiles = raw_property(RawOrganizationReferent.profiles)
types = raw_property(RawOrganizationReferent.types)
kind = raw_property(RawOrganizationReferent.kind)
class GeoReferent(Referent):
name = slot_property(RawGeoReferent.ATTR_NAME)
type = slot_property(RawGeoReferent.ATTR_TYPE)
alpha2 = slot_property(RawGeoReferent.ATTR_ALPHA2)
higher = slot_property(RawGeoReferent.ATTR_HIGHER)
ref = slot_property(RawGeoReferent.ATTR_REF)
fias = slot_property(RawGeoReferent.ATTR_FIAS)
bti = slot_property(RawGeoReferent.ATTR_BTI)
types = raw_property(RawGeoReferent.typs)
class DateReferent(Referent):
as_datetime = raw_property(RawDateReferent.dt)
century = raw_property(RawDateReferent.century)
year = raw_property(RawDateReferent.year)
month = raw_property(RawDateReferent.month)
day = raw_property(RawDateReferent.day)
day_of_week = raw_property(RawDateReferent.day_of_week)
hour = raw_property(RawDateReferent.hour)
minute = raw_property(RawDateReferent.minute)
second = raw_property(RawDateReferent.second)
higher = raw_property(RawDateReferent.higher)
pointer = raw_property(RawDateReferent.pointer)
class DateRangeReferent(Referent):
from_ = raw_property(RawDateRangeReferent.date_from)
to = raw_property(RawDateRangeReferent.date_to)
class MoneyReferent(Referent):
currency = raw_property(RawMoneyReferent.currency)
value = raw_property(RawMoneyReferent.value)
alt_value = raw_property(RawMoneyReferent.alt_value)
rest = raw_property(RawMoneyReferent.rest)
alt_rest = raw_property(RawMoneyReferent.alt_rest)
real_value = raw_property(RawMoneyReferent.real_value)
class PhoneReferent(Referent):
number = raw_property(RawPhoneReferent.number)
add_number = raw_property(RawPhoneReferent.add_number)
country_code = raw_property(RawPhoneReferent.country_code)
kind = raw_property(RawPhoneReferent.kind)
REFERENTS = {
RawPersonReferent: PersonReferent,
RawPersonPropertyReferent: PersonPropertyReferent,
RawPersonIdentityReferent: PersonIdentityReferent,
RawOrganizationReferent: OrganizationReferent,
RawGeoReferent: GeoReferent,
RawDateReferent: DateReferent,
RawDateRangeReferent: DateRangeReferent,
RawMoneyReferent: MoneyReferent,
RawPhoneReferent: PhoneReferent,
}
def convert_referent(raw):
Raw = type(raw)
Referent = REFERENTS.get(Raw)
if Referent:
referent = Referent(raw.type_name)
referent.raw = raw
return referent
raise TypeError('not supported type: {type}'.format(
type=type(raw)
))
def convert_slots(raw, referents):
for slot in raw:
key = slot.type_name
value = slot.value
if isinstance(value, RawReferent):
value_id = id(value)
if value_id not in referents:
# TODO rare
continue
value = referents[value_id]
yield Slot(key, value)
def convert_referents(raws):
referents = {}
for raw in raws:
raw_id = id(raw)
if raw_id not in referents:
referent = convert_referent(raw)
referents[raw_id] = referent
for raw in raws:
slots = list(convert_slots(raw.slots, referents))
referent = referents[id(raw)]
referent.slots = slots
return referents
############
#
# RESULT
#
############
from pullenti.ner.ReferentToken import ReferentToken
class Span(Record):
__attributes__ = ['start', 'stop']
def __init__(self, start, stop):
self.start = start
self.stop = stop
class Match(Record):
__attributes__ = ['referent', 'span', 'children']
def __init__(self, referent, span, children):
assert_type(referent, Referent)
self.referent = referent
assert_type(span, Span)
self.span = span
for child in children:
assert_type(child, Match)
self.children = children
def walk(self):
yield self
for child in self.children:
for item in child.walk():
yield item
def get_match(token, referents):
referent = referents[id(token.referent)]
start = token.begin_token
stop = token.end_token
span = Span(start.begin_char, stop.end_char + 1)
children = list(get_matches(start, stop, referents))
return Match(referent, span, children)
def get_matches(token, stop=None, referents=None):
while token:
if isinstance(token, ReferentToken):
yield get_match(token, referents)
if token == stop:
break
token = token.next0_
def convert_result(raw):
referents = convert_referents(raw.entities)
matches = list(get_matches(raw.first_token, referents=referents))
result = Result(matches)
result.raw = raw
return result
class Result(Record):
__attributes__ = ['matches']
raw = None
def __init__(self, matches):
self.matches = matches
def walk(self):
for match in self.matches:
for item in match.walk():
yield item
@property
def graph(self):
return graph_result(self)
############
#
# GRAPH
#
###########
from subprocess import Popen, PIPE
BLUE = '#aec7e8'
ORANGE = '#ffbb78'
GREEN = '#dbdb8d'
RED = '#ff9896'
PURPLE = '#f7b6d2'
SILVER = '#eeeeee'
GRAY = 'gray'
DARKGRAY = '#888888'
def dot2svg(source):
process = Popen(
['dot', '-T', 'svg'],
stdin=PIPE, stdout=PIPE, stderr=PIPE
)
output, error = process.communicate(source.encode('utf8'))
if process.returncode != 0:
raise ValueError(error)
return output.decode('utf8')
class style(Record):
__attributes__ = ['attributes']
def __init__(self, **attributes):
self.attributes = attributes
def quote(self, value):
value = str(value)
replace = {
'"': r'\"',
'\n': r'\n',
'\r': r'\r'
}
for a, b in replace.items():
value = value.replace(a, b)
return '"' + value + '"'
def __str__(self):
return ', '.join(
'{key}={value}'.format(
key=key,
value=self.quote(value)
)
for key, value in self.attributes.items()
)
class Node(Record):
__attributes__ = ['item', 'style']
def __init__(self, item, style):
self.item = item
self.style = style
def __hash__(self):
return id(self.item)
class Edge(Record):
__attributes__ = ['source', 'target', 'style']
def __init__(self, source, target, style):
self.source = source
self.target = target
self.style = style
def __hash__(self):
return id(self.source) ^ id(self.target)
class Graph(Record):
__attributes__ = ['nodes', 'edges']
graph_style = style(
margin=0,
nodesep=0,
ranksep=0,
splines='splines',
layout='neato',
overlap='compress',
)
node_style = style(
shape='box',
height=0,
width=0,
fontname='sans',
fontsize=10,
color='none',
style='filled',
fillcolor=SILVER
)
edge_style = style(
fontname='sans',
fontsize=8,
fontcolor=GRAY,
arrowsize=0.3,
color=GRAY
)
def __init__(self):
self.nodes = set()
self.edges = set()
self.ids = {}
def add_node(self, item, style=None):
node = Node(item, style)
self.nodes.add(node)
def add_edge(self, source, target, style=None):
edge = Edge(source, target, style)
self.edges.add(edge)
def id(self, item):
item_id = id(item)
if item_id not in self.ids:
self.ids[item_id] = len(self.ids)
return self.ids[item_id]
@property
def source(self):
yield 'digraph G {'
yield 'graph [{graph_style}];'.format(graph_style=str(self.graph_style))
yield 'node [{node_style}];'.format(node_style=str(self.node_style))
yield 'edge [{edge_style}];'.format(edge_style=str(self.edge_style))
for node in self.nodes:
pattern = (
'{index} [{style}];'
if node.style
else '{index}'
)
yield pattern.format(
index=self.id(node.item),
style=str(node.style)
)
for edge in self.edges:
pattern = (
'{source} -> {target} [{style}];'
if edge.style
else '{source} -> {target};'
)
yield pattern.format(
source=self.id(edge.source),
target=self.id(edge.target),
style=str(edge.style)
)
yield '}'
def _repr_svg_(self):
return dot2svg('\n'.join(self.source))
def graph_result(result):
graph = Graph()
for match in result.walk():
source = match.referent
for key, target in source.slots:
graph.add_edge(
source,
target,
style(
label=key
)
)
graph.add_node(
source,
style(
label=source.label,
fillcolor=BLUE
)
)
if isinstance(target, Referent):
color = BLUE
label = target.label
else:
color = SILVER
label = target
graph.add_node(
target,
style(
label=label,
fillcolor=color
)
)
return graph
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Readme"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Плюсы PullEnti:\n",
"- Наверное, лучше качество NER для русского языка. Отличная точность, нормальная полнота. 100% лучшее доступное для Python решение для NER для русского. Топовое решение на https://github.com/dialogue-evaluation/factRuEval-2016\n",
"- Много встроенных сущностей. Не только базовые PERSON, ORG, GEO, но ещё DATE, MONEY, PHONE, ADDRESS и ~10 других\n",
"- Очень подробный разбор. Для фразы \"руководителю Гринписа Ивану Залесову\" пользователь получит должность, огранизацию, отдельно имя и фамилию, всё в нормальной форме."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Title: G Pages: 1 -->\n",
"<svg width=\"401pt\" height=\"275pt\"\n",
" viewBox=\"0.00 0.00 400.93 274.65\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 270.6467)\">\n",
"<title>G</title>\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-270.6467 396.9258,-270.6467 396.9258,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"218.4763,-124.6014 105.3454,-124.6014 105.3454,-106.6014 218.4763,-106.6014 218.4763,-124.6014\"/>\n",
"<text text-anchor=\"middle\" x=\"161.9109\" y=\"-112.6014\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSONPROPERTY</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"150.3071,-56.6774 68.6368,-56.6774 68.6368,-38.6774 150.3071,-38.6774 150.3071,-56.6774\"/>\n",
"<text text-anchor=\"middle\" x=\"109.4719\" y=\"-44.6774\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">руководитель</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;8 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>0&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M154.8387,-106.4408C145.4035,-94.2194 128.6946,-72.5764 118.4011,-59.2433\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"119.0965,-58.4258 116.432,-56.6928 117.4342,-59.7091 119.0965,-58.4258\"/>\n",
"<text text-anchor=\"middle\" x=\"125.0633\" y=\"-84.4421\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"296.049,-103.232 204.2955,-103.232 204.2955,-85.232 296.049,-85.232 296.049,-103.232\"/>\n",
"<text text-anchor=\"middle\" x=\"250.1723\" y=\"-91.232\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ORGANIZATION</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;12 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>0&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M199.0859,-106.6008C202.6192,-105.7453 206.2136,-104.875 209.7754,-104.0127\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"210.0888,-105.0172 212.7575,-103.2907 209.5946,-102.9762 210.0888,-105.0172\"/>\n",
"<text text-anchor=\"middle\" x=\"196.4306\" y=\"-98.9067\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">REF</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"133.0386,-266.6467 89.5745,-266.6467 89.5745,-248.6467 133.0386,-248.6467 133.0386,-266.6467\"/>\n",
"<text text-anchor=\"middle\" x=\"111.3065\" y=\"-254.6467\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">MALE</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"297.7095,-18 233.772,-18 233.772,0 297.7095,0 297.7095,-18\"/>\n",
"<text text-anchor=\"middle\" x=\"265.7407\" y=\"-6\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ГРИНПИС</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"340.1221,-182.4076 173.0933,-182.4076 173.0933,-164.4076 340.1221,-164.4076 340.1221,-182.4076\"/>\n",
"<text text-anchor=\"middle\" x=\"256.6077\" y=\"-170.4076\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">GREENPEACE INTERNATIONAL</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"326.6877,-165.307 293.233,-165.307 293.233,-147.307 326.6877,-147.307 326.6877,-165.307\"/>\n",
"<text text-anchor=\"middle\" x=\"309.9604\" y=\"-153.307\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">GPI</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"128.1534,-183.2913 69.6895,-183.2913 69.6895,-165.2913 128.1534,-165.2913 128.1534,-183.2913\"/>\n",
"<text text-anchor=\"middle\" x=\"98.9215\" y=\"-171.2913\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>5&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M108.7636,-165.121C119.7927,-154.8447 137.688,-138.1708 149.6257,-127.048\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"150.4509,-127.7143 151.93,-124.901 149.0193,-126.1778 150.4509,-127.7143\"/>\n",
"<text text-anchor=\"middle\" x=\"107.2669\" y=\"-147.6845\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">ATTRIBUTE</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>5&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M100.2942,-183.5302C102.5379,-198.6309 106.9908,-228.6001 109.4923,-245.436\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"108.4857,-245.8067 109.9653,-248.6197 110.5629,-245.498 108.4857,-245.8067\"/>\n",
"<text text-anchor=\"middle\" x=\"96.8893\" y=\"-216.0831\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"43.8434,-147.1409 .0521,-147.1409 .0521,-129.1409 43.8434,-129.1409 43.8434,-147.1409\"/>\n",
"<text text-anchor=\"middle\" x=\"21.9478\" y=\"-135.1409\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ИВАН</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;6 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>5&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M79.4977,-165.169C68.7407,-160.117 55.3256,-153.8166 44.1541,-148.57\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"44.5271,-147.5852 41.3653,-147.2602 43.6343,-149.486 44.5271,-147.5852\"/>\n",
"<text text-anchor=\"middle\" x=\"38.7146\" y=\"-158.4695\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"68.2684,-230.6862 3.9715,-230.6862 3.9715,-212.6862 68.2684,-212.6862 68.2684,-230.6862\"/>\n",
"<text text-anchor=\"middle\" x=\"36.12\" y=\"-218.6862\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ЗАЛЕСОВ</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M86.8127,-183.4295C76.4739,-191.2319 61.5795,-202.4724 50.6095,-210.7512\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"49.9537,-209.9307 48.1915,-212.576 51.2187,-211.6069 49.9537,-209.9307\"/>\n",
"<text text-anchor=\"middle\" x=\"47.1506\" y=\"-198.6903\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"369.2807,-110.2498 297.5758,-110.2498 297.5758,-92.2498 369.2807,-92.2498 369.2807,-110.2498\"/>\n",
"<text text-anchor=\"middle\" x=\"333.4282\" y=\"-98.2498\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ассоциация</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"392.7572,-51.5556 238.4322,-51.5556 238.4322,-33.5556 392.7572,-33.5556 392.7572,-51.5556\"/>\n",
"<text text-anchor=\"middle\" x=\"315.5947\" y=\"-39.5556\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">международная организация</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"255.6505,-32.5771 169.7222,-32.5771 169.7222,-14.5771 255.6505,-14.5771 255.6505,-32.5771\"/>\n",
"<text text-anchor=\"middle\" x=\"212.6863\" y=\"-20.5771\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">GREENPEACE</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>12&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M251.8384,-85.1107C254.6476,-69.7313 260.3286,-38.6295 263.4896,-21.3241\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"264.5804,-21.1956 264.0866,-18.0557 262.5146,-20.8182 264.5804,-21.1956\"/>\n",
"<text text-anchor=\"middle\" x=\"246.1074\" y=\"-54.8174\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;3 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>12&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M250.9105,-103.3145C252.0619,-117.4803 254.2881,-144.869 255.5906,-160.8944\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"254.5486,-161.0357 255.8382,-163.9407 256.6417,-160.8655 254.5486,-161.0357\"/>\n",
"<text text-anchor=\"middle\" x=\"241.6939\" y=\"-133.7045\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;4 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>12&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M258.9942,-103.3914C269.5917,-114.3942 287.3775,-132.8604 298.8878,-144.811\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"298.2648,-145.6777 301.1023,-147.1101 299.7774,-144.2209 298.2648,-145.6777\"/>\n",
"<text text-anchor=\"middle\" x=\"267.3844\" y=\"-125.7012\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;7 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>12&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M296.1835,-98.1104C296.2963,-98.1199 296.4091,-98.1294 296.5218,-98.1389\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"294.4573,-99.0183 297.535,-98.2243 294.6339,-96.9258 294.4573,-99.0183\"/>\n",
"<text text-anchor=\"middle\" x=\"285.9054\" y=\"-99.7246\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">TYPE</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;9 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>12&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M261.568,-85.2307C272.5954,-76.5203 289.3472,-63.2882 301.271,-53.8697\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"302.1857,-54.4853 303.889,-51.8018 300.884,-52.8374 302.1857,-54.4853\"/>\n",
"<text text-anchor=\"middle\" x=\"270.9723\" y=\"-71.1502\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">TYPE</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;10 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>12&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M245.2717,-84.9951C238.4993,-72.2304 226.2793,-49.1975 218.8818,-35.2545\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"219.8033,-34.7509 217.4697,-32.5929 217.9482,-35.7351 219.8033,-34.7509\"/>\n",
"<text text-anchor=\"middle\" x=\"220.5201\" y=\"-61.7248\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"Graph(\n",
" nodes={Node(\n",
" item='GPI',\n",
" style=style(\n",
" attributes={'label': 'GPI', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='GREENPEACE INTERNATIONAL',\n",
" style=style(\n",
" attributes={'label': 'GREENPEACE INTERNATIONAL',\n",
" 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='GREENPEACE',\n",
" style=style(\n",
" attributes={'label': 'GREENPEACE', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='MALE',\n",
" style=style(\n",
" attributes={'label': 'MALE', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ГРИНПИС',\n",
" style=style(\n",
" attributes={'label': 'ГРИНПИС', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ЗАЛЕСОВ',\n",
" style=style(\n",
" attributes={'label': 'ЗАЛЕСОВ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ИВАН',\n",
" style=style(\n",
" attributes={'label': 'ИВАН', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ассоциация',\n",
" style=style(\n",
" attributes={'label': 'ассоциация', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='международная организация',\n",
" style=style(\n",
" attributes={'label': 'международная организация',\n",
" 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='руководитель',\n",
" style=style(\n",
" attributes={'label': 'руководитель', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ORGANIZATION', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSONPROPERTY', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЗАЛЕСОВ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ИВАН'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" )},\n",
" edges={Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" target='GPI',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" target='GREENPEACE INTERNATIONAL',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" target='GREENPEACE',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" target='ГРИНПИС',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" target='ассоциация',\n",
" style=style(\n",
" attributes={'label': 'TYPE'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" target='международная организация',\n",
" style=style(\n",
" attributes={'label': 'TYPE'}\n",
" )\n",
" ), Edge(\n",
" source=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" ),\n",
" target='руководитель',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" ),\n",
" target=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'REF'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЗАЛЕСОВ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ИВАН'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='MALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЗАЛЕСОВ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ИВАН'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ЗАЛЕСОВ',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЗАЛЕСОВ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ИВАН'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ИВАН',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЗАЛЕСОВ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ИВАН'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='REF',\n",
" value=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='международная организация'\n",
" ), Slot(\n",
" key='TYPE',\n",
" value='ассоциация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='ГРИНПИС'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GREENPEACE INTERNATIONAL'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='GPI'\n",
" )]\n",
" )\n",
" ), Slot(\n",
" key='NAME',\n",
" value='руководитель'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ATTRIBUTE'}\n",
" )\n",
" )}\n",
")"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"processor('руководителю Гринписа Ивану Залесову').graph"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- Кроме русского есть английский, украинский языки\n",
"\n",
"Минусы:\n",
"- Некоммерческое использование\n",
"- Медленно работает в Python. Текст одной новости с lenta.ru разбирается ~2 секунды\n",
"- Не очень привычный для Python интерфейс. Код получается трансляцией из C#\n",
"- Установка не через Pip\n",
"- Очень сложный код. Тяжело понять, что пошло не так есть, если в результате ошибка\n",
"\n",
"Данная обёртка нужна, чтобы исправить проблемы с интерфейсом и установкой через Pip. Концептуально в интерфейсе ничего не меняется, он просто немного более лаконичный, у результатов разбора добавлен нормальный `__repr__`. Оригинальный интерфейс доступен через `result.raw`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Docs"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%run -n main.py\n",
"data = list(load_lines('news.txt'))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"set_langs([RU])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"processor = Processor([DATE, GEO, ORGANIZATION, PERSON])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"text = preprocess(data[2])\n",
"result = processor(text)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Организация Media Action Network for Asian Americans, отстаивающая \n",
"ORGANIZATION---------------------------------------- \n",
"интересы американцев азиатского происхождения, обвинила Ридли Скотта в\n",
" PERSON------ \n",
" том, что он взял на роли монголоидных персонажей «Марсианина» актеров\n",
" с белым и черным цветом кожи. Об этом сообщает The Guardian. «Этот \n",
" ORGANIZATION \n",
"духоподъемный фильм, который, по слухам, уже претендует на \"Оскар\", \n",
"точно не заслуживает наград за кастинг», — заявил глава MANAA Гай \n",
" PERSONPROPE \n",
" PERSON----------\n",
"Аоки. Недовольство организации вызвал тот факт, что два азиатских \n",
" \n",
"---- \n",
"персонажа одноименного романа Энди Уира, по которому поставлен \n",
" PERSON--- \n",
"«Марсианин», в экранном варианте поменяли цвет кожи. Минди Парк, \n",
"которая в первоисточнике была кореянкой, сыграла белая актриса Макензи\n",
" PERSONPROPERT \n",
" PERSON---------------\n",
" Дэвис. Роль индийца Венката Капура исполнил афробританский артист \n",
" PERSONP PERSONPROPERTY------- \n",
"------ PERSON---------------- PERSON----------------\n",
"Чиветель Эджиофор. Его персонаж получил и новое имя — Винсент. По \n",
" \n",
"----------------- \n",
"словам Аоки, тем самым режиссер упустил возможность предоставить \n",
" PERS \n",
"большие роли талантливым актерам-монголоидам и не дал представителям \n",
"азиатско-американской диаспоры поучаствовать в ленте. «Марсианин» \n",
"вышел в российский прокат 8 октября. Речь в картине, где главную роль \n",
" DATE----- \n",
"сыграл Мэтт Дэймон, идет об астронавте, в одиночестве оказавшемся на \n",
" PERSON----- \n",
"Марсе после эвакуации остальной экспедиции. Ридли Скотта не впервые \n",
" PERSON------ \n",
"обвиняют в подобной практике подбора актеров. Вышедший в январе \n",
" DATE-- \n",
"2015-го библейский эпос «Исход: Цари и боги» был раскритикован за то, \n",
"что египтян и израильтян в нем сыграли белые актеры, такие как \n",
"Кристиан Бэйл, Джоэл Эдгертон и Сигурни Уивер.\n",
"PERSON------- PERSON-------- PERSON------- \n"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spans = []\n",
"for match in result.walk():\n",
" span = MarkupSpan(*match.span, match.referent.label)\n",
" spans.append(span)\n",
"AsciiMarkup(text, spans)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Title: G Pages: 1 -->\n",
"<svg width=\"802pt\" height=\"635pt\"\n",
" viewBox=\"0.00 0.00 801.90 635.14\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 631.135)\">\n",
"<title>G</title>\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-631.135 797.8975,-631.135 797.8975,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"547.0969,-471.6328 433.966,-471.6328 433.966,-453.6328 547.0969,-453.6328 547.0969,-471.6328\"/>\n",
"<text text-anchor=\"middle\" x=\"490.5315\" y=\"-459.6328\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSONPROPERTY</text>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"459.6765,-491.9968 375.1076,-491.9968 375.1076,-473.9968 459.6765,-473.9968 459.6765,-491.9968\"/>\n",
"<text text-anchor=\"middle\" x=\"417.3921\" y=\"-479.9968\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">белая актриса</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;24 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>0&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M457.8124,-471.7427C456.1959,-472.1927 454.5693,-472.6456 452.9453,-473.0978\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"452.6363,-472.0938 450.0279,-473.9101 453.1996,-474.1169 452.6363,-472.0938\"/>\n",
"<text text-anchor=\"middle\" x=\"466.9355\" y=\"-474.0202\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"100.3427,-524.2391 50.2178,-524.2391 50.2178,-506.2391 100.3427,-506.2391 100.3427,-524.2391\"/>\n",
"<text text-anchor=\"middle\" x=\"75.2803\" y=\"-512.2391\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">индиец</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"578.9378,-295.2315 444.5997,-295.2315 444.5997,-277.2315 578.9378,-277.2315 578.9378,-295.2315\"/>\n",
"<text text-anchor=\"middle\" x=\"511.7687\" y=\"-283.2315\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ЧИВЕТЕЛЬ ЭДЖИОФОР</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"337.1064,-283.2747 278.6425,-283.2747 278.6425,-265.2747 337.1064,-265.2747 337.1064,-283.2747\"/>\n",
"<text text-anchor=\"middle\" x=\"307.8744\" y=\"-271.2747\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>15</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"399.7062,-315.5089 354.7972,-315.5089 354.7972,-297.5089 399.7062,-297.5089 399.7062,-315.5089\"/>\n",
"<text text-anchor=\"middle\" x=\"377.2517\" y=\"-303.5089\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">АОКИ</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;15 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>3&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M327.5696,-283.4255C335.9898,-287.3377 345.8695,-291.9281 354.5913,-295.9804\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"354.5843,-297.1349 357.7474,-297.4468 355.4692,-295.2304 354.5843,-297.1349\"/>\n",
"<text text-anchor=\"middle\" x=\"319.5199\" y=\"-291.303\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 30 -->\n",
"<g id=\"node31\" class=\"node\">\n",
"<title>30</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"259.3777,-228.7464 215.9135,-228.7464 215.9135,-210.7464 259.3777,-210.7464 259.3777,-228.7464\"/>\n",
"<text text-anchor=\"middle\" x=\"237.6456\" y=\"-216.7464\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">MALE</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;30 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>3&#45;&gt;30</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M296.2776,-265.2705C284.1516,-255.8554 265.1009,-241.0638 252.0259,-230.9119\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"252.508,-229.9568 249.4944,-228.9463 251.2201,-231.6156 252.508,-229.9568\"/>\n",
"<text text-anchor=\"middle\" x=\"266.1479\" y=\"-249.6912\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 32 -->\n",
"<g id=\"node33\" class=\"node\">\n",
"<title>32</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"405.7597,-262.0526 370.37,-262.0526 370.37,-244.0526 405.7597,-244.0526 405.7597,-262.0526\"/>\n",
"<text text-anchor=\"middle\" x=\"388.0648\" y=\"-250.0526\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ГАЙ</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;32 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>3&#45;&gt;32</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M337.279,-266.4929C347.1521,-263.88 357.9582,-261.0202 367.0548,-258.6129\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"367.6924,-259.5303 370.324,-257.7477 367.1551,-257.5002 367.6924,-259.5303\"/>\n",
"<text text-anchor=\"middle\" x=\"329.0556\" y=\"-256.1529\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 33 -->\n",
"<g id=\"node34\" class=\"node\">\n",
"<title>33</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"386.0793,-366.5404 272.9484,-366.5404 272.9484,-348.5404 386.0793,-348.5404 386.0793,-366.5404\"/>\n",
"<text text-anchor=\"middle\" x=\"329.5139\" y=\"-354.5404\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSONPROPERTY</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;33 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>3&#45;&gt;33</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M310.2729,-283.5037C314.1931,-298.5882 321.9733,-328.5251 326.3439,-345.3428\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"325.3995,-345.8837 327.1704,-348.5232 327.432,-345.3555 325.3995,-345.8837\"/>\n",
"<text text-anchor=\"middle\" x=\"296.3807\" y=\"-316.0233\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">ATTRIBUTE</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"411.9752,-171.365 368.2849,-171.365 368.2849,-153.365 411.9752,-153.365 411.9752,-171.365\"/>\n",
"<text text-anchor=\"middle\" x=\"390.1301\" y=\"-159.365\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">УИРА</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"333.7918,-519.258 277.5474,-519.258 277.5474,-501.258 333.7918,-501.258 333.7918,-519.258\"/>\n",
"<text text-anchor=\"middle\" x=\"305.6696\" y=\"-507.258\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ВЕНКАТ</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"265.9261,-468 203.1174,-468 203.1174,-450 265.9261,-450 265.9261,-468\"/>\n",
"<text text-anchor=\"middle\" x=\"234.5218\" y=\"-456\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ВЕНКАТА</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"694.3017,-239.871 565.8873,-239.871 565.8873,-221.871 694.3017,-221.871 694.3017,-239.871\"/>\n",
"<text text-anchor=\"middle\" x=\"630.0945\" y=\"-227.871\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ЧИВЕТЛИ ЭДЖИОФОР</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"555.9561,-93 425.0146,-93 425.0146,-75 555.9561,-75 555.9561,-93\"/>\n",
"<text text-anchor=\"middle\" x=\"490.4854\" y=\"-81\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">афробританский артист</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"246.0127,-68 176.2684,-68 176.2684,-50 246.0127,-50 246.0127,-68\"/>\n",
"<text text-anchor=\"middle\" x=\"211.1406\" y=\"-56\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ЭДГЕРТОН</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"337.4402,-185.3585 278.9764,-185.3585 278.9764,-167.3585 337.4402,-167.3585 337.4402,-185.3585\"/>\n",
"<text text-anchor=\"middle\" x=\"308.2083\" y=\"-173.3585\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>10&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M337.7839,-171.3065C346.764,-169.7726 356.537,-168.1032 365.181,-166.6267\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"365.5307,-167.6323 368.311,-166.0921 365.177,-165.5623 365.5307,-167.6323\"/>\n",
"<text text-anchor=\"middle\" x=\"340.7022\" y=\"-162.5666\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;30 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>10&#45;&gt;30</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M293.2438,-185.5599C282.111,-192.4053 266.8842,-201.768 255.1803,-208.9646\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"254.5941,-208.0924 252.5886,-210.5582 255.6941,-209.8813 254.5941,-208.0924\"/>\n",
"<text text-anchor=\"middle\" x=\"266.2081\" y=\"-198.8623\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 41 -->\n",
"<g id=\"node42\" class=\"node\">\n",
"<title>41</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"375.1166,-114.0427 330.7608,-114.0427 330.7608,-96.0427 375.1166,-96.0427 375.1166,-114.0427\"/>\n",
"<text text-anchor=\"middle\" x=\"352.9387\" y=\"-102.0427\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ЭНДИ</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;41 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>10&#45;&gt;41</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M313.8734,-167.3263C321.8957,-154.536 336.5781,-131.1272 345.4789,-116.9362\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"346.4737,-117.3262 347.1782,-114.2268 344.6946,-116.2104 346.4737,-117.3262\"/>\n",
"<text text-anchor=\"middle\" x=\"306.5648\" y=\"-143.7313\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"686.1408,-48.8846 594.3873,-48.8846 594.3873,-30.8846 686.1408,-30.8846 686.1408,-48.8846\"/>\n",
"<text text-anchor=\"middle\" x=\"640.264\" y=\"-36.8846\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ORGANIZATION</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"697.9355,-74.8846 622.3451,-74.8846 622.3451,-56.8846 697.9355,-56.8846 697.9355,-74.8846\"/>\n",
"<text text-anchor=\"middle\" x=\"660.1403\" y=\"-62.8846\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">организация</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;18 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>11&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M647.2158,-48.9781C648.3912,-50.5157 649.6281,-52.1337 650.8518,-53.7344\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"650.3679,-54.8303 653.0241,-56.576 652.0363,-53.5549 650.3679,-54.8303\"/>\n",
"<text text-anchor=\"middle\" x=\"659.4811\" y=\"-52.9563\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">TYPE</text>\n",
"</g>\n",
"<!-- 40 -->\n",
"<g id=\"node41\" class=\"node\">\n",
"<title>40</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"758.7481,-18 500.0839,-18 500.0839,0 758.7481,0 758.7481,-18\"/>\n",
"<text text-anchor=\"middle\" x=\"629.416\" y=\"-6\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">MEDIA ACTION NETWORK FOR ASIAN AMERICANS</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;40 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>11&#45;&gt;40</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M637.0679,-30.7852C636.018,-27.7959 634.8332,-24.4228 633.7151,-21.2397\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"634.6117,-20.6235 632.6267,-18.141 632.6303,-21.3195 634.6117,-20.6235\"/>\n",
"<text text-anchor=\"middle\" x=\"623.8349\" y=\"-19.6124\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"594.9649,-438.3606 536.5011,-438.3606 536.5011,-420.3606 594.9649,-420.3606 594.9649,-438.3606\"/>\n",
"<text text-anchor=\"middle\" x=\"565.733\" y=\"-426.3606\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;0 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>12&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M545.1839,-438.4523C535.4847,-442.7436 523.8651,-447.8846 513.8386,-452.3207\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"513.3744,-451.3779 511.0558,-453.552 514.2241,-453.2983 513.3744,-451.3779\"/>\n",
"<text text-anchor=\"middle\" x=\"507.5835\" y=\"-446.9865\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">ATTRIBUTE</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"645.5136,-371.0148 580.3993,-371.0148 580.3993,-353.0148 645.5136,-353.0148 645.5136,-371.0148\"/>\n",
"<text text-anchor=\"middle\" x=\"612.9565\" y=\"-359.0148\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">МАКЕНЗИ</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;16 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>12&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M572.1018,-420.278C580.5042,-408.2953 595.3121,-387.1776 604.6042,-373.926\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"605.5229,-374.4448 606.3856,-371.3856 603.8035,-373.2391 605.5229,-374.4448\"/>\n",
"<text text-anchor=\"middle\" x=\"565.2417\" y=\"-398.702\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 37 -->\n",
"<g id=\"node38\" class=\"node\">\n",
"<title>37</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"553.5585,-368 501.8628,-368 501.8628,-350 553.5585,-350 553.5585,-368\"/>\n",
"<text text-anchor=\"middle\" x=\"527.7107\" y=\"-356\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ДЭВИС</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;37 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>12&#45;&gt;37</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M560.7623,-420.1621C553.9685,-407.5902 541.7698,-385.0166 534.2439,-371.0898\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"535.1541,-370.5653 532.804,-368.4252 533.3066,-371.5637 535.1541,-370.5653\"/>\n",
"<text text-anchor=\"middle\" x=\"525.9425\" y=\"-389.226\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 52 -->\n",
"<g id=\"node53\" class=\"node\">\n",
"<title>52</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"652.0568,-495.2346 596.0372,-495.2346 596.0372,-477.2346 652.0568,-477.2346 652.0568,-495.2346\"/>\n",
"<text text-anchor=\"middle\" x=\"624.047\" y=\"-483.2346\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">FEMALE</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;52 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>12&#45;&gt;52</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M575.1022,-438.4983C585.1592,-448.307 601.1633,-463.9159 612.1142,-474.5964\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"611.6266,-475.5875 614.5074,-476.9305 613.0928,-474.0841 611.6266,-475.5875\"/>\n",
"<text text-anchor=\"middle\" x=\"585.6043\" y=\"-458.1474\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"21.3467,-49.8181 .2149,-49.8181 .2149,-31.8181 21.3467,-31.8181 21.3467,-49.8181\"/>\n",
"<text text-anchor=\"middle\" x=\"10.7808\" y=\"-37.8181\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"231.3928,-627.135 174.8003,-627.135 174.8003,-609.135 231.3928,-609.135 231.3928,-627.135\"/>\n",
"<text text-anchor=\"middle\" x=\"203.0966\" y=\"-615.135\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">КАПУРА</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"206.6853,-533.7881 93.5544,-533.7881 93.5544,-515.7881 206.6853,-515.7881 206.6853,-533.7881\"/>\n",
"<text text-anchor=\"middle\" x=\"150.1199\" y=\"-521.7881\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSONPROPERTY</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;1 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>17&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M93.3969,-517.5506C93.3153,-517.5402 93.2339,-517.5298 93.1527,-517.5195\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"96.0188,-516.8277 92.9096,-517.4885 95.7522,-518.9108 96.0188,-516.8277\"/>\n",
"<text text-anchor=\"middle\" x=\"104.8314\" y=\"-511.135\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"122.5955,-312.6508 71.6151,-312.6508 71.6151,-294.6508 122.5955,-294.6508 122.5955,-312.6508\"/>\n",
"<text text-anchor=\"middle\" x=\"97.1053\" y=\"-300.6508\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">РИДЛИ</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"91.3433,-449.9128 .2182,-449.9128 .2182,-431.9128 91.3433,-431.9128 91.3433,-449.9128\"/>\n",
"<text text-anchor=\"middle\" x=\"45.7808\" y=\"-437.9128\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">THE GUARDIAN</text>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"200.1881,-178.1382 141.7243,-178.1382 141.7243,-160.1382 200.1881,-160.1382 200.1881,-178.1382\"/>\n",
"<text text-anchor=\"middle\" x=\"170.9562\" y=\"-166.1382\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;30 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>21&#45;&gt;30</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M182.879,-178.1859C194.0249,-186.6442 210.7086,-199.3049 222.7314,-208.4286\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"222.3504,-209.4575 225.3749,-210.4346 223.6198,-207.7846 222.3504,-209.4575\"/>\n",
"<text text-anchor=\"middle\" x=\"194.8013\" y=\"-194.9073\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 43 -->\n",
"<g id=\"node44\" class=\"node\">\n",
"<title>43</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"162.7062,-104.3324 102.1351,-104.3324 102.1351,-86.3324 162.7062,-86.3324 162.7062,-104.3324\"/>\n",
"<text text-anchor=\"middle\" x=\"132.4206\" y=\"-92.3324\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ДЭЙМОН</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;43 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>21&#45;&gt;43</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M166.231,-160.0882C159.2972,-146.8082 146.3564,-122.023 138.6522,-107.2675\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"139.5038,-106.6298 137.1845,-104.4565 137.6423,-107.6018 139.5038,-106.6298\"/>\n",
"<text text-anchor=\"middle\" x=\"130.8811\" y=\"-135.2778\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 44 -->\n",
"<g id=\"node45\" class=\"node\">\n",
"<title>44</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"111.1078,-161.0379 67.5694,-161.0379 67.5694,-143.0379 111.1078,-143.0379 111.1078,-161.0379\"/>\n",
"<text text-anchor=\"middle\" x=\"89.3386\" y=\"-149.0379\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">МЭТТ</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;44 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>21&#45;&gt;44</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M141.4904,-162.9646C132.6251,-161.1072 122.9839,-159.0872 114.4302,-157.295\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"114.483,-156.2334 111.3314,-156.6458 114.0523,-158.2888 114.483,-156.2334\"/>\n",
"<text text-anchor=\"middle\" x=\"151.0716\" y=\"-153.7298\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"257.3905,-387.57 186.156,-387.57 186.156,-369.57 257.3905,-369.57 257.3905,-387.57\"/>\n",
"<text text-anchor=\"middle\" x=\"221.7733\" y=\"-375.57\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">КРИСТИАН</text>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"707.5068,-626.6347 657.7039,-626.6347 657.7039,-608.6347 707.5068,-608.6347 707.5068,-626.6347\"/>\n",
"<text text-anchor=\"middle\" x=\"682.6054\" y=\"-614.6347\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">УИВЕР</text>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"312.5941,-607.8423 262.5668,-607.8423 262.5668,-589.8423 312.5941,-589.8423 312.5941,-607.8423\"/>\n",
"<text text-anchor=\"middle\" x=\"287.5804\" y=\"-595.8423\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">КАПУР</text>\n",
"</g>\n",
"<!-- 26 -->\n",
"<g id=\"node27\" class=\"node\">\n",
"<title>26</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"576.5876,-159.9766 463.4568,-159.9766 463.4568,-141.9766 576.5876,-141.9766 576.5876,-159.9766\"/>\n",
"<text text-anchor=\"middle\" x=\"520.0222\" y=\"-147.9766\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSONPROPERTY</text>\n",
"</g>\n",
"<!-- 26&#45;&gt;8 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>26&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M516.0387,-141.9439C510.8271,-130.1261 501.6755,-109.3743 495.8554,-96.177\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"496.7665,-95.6407 494.5952,-93.3194 494.8451,-96.4881 496.7665,-95.6407\"/>\n",
"<text text-anchor=\"middle\" x=\"494.3904\" y=\"-120.6604\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 27 -->\n",
"<g id=\"node28\" class=\"node\">\n",
"<title>27</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"371.3467,-23.9384 350.2149,-23.9384 350.2149,-5.9384 371.3467,-5.9384 371.3467,-23.9384\"/>\n",
"<text text-anchor=\"middle\" x=\"360.7808\" y=\"-11.9384\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 28 -->\n",
"<g id=\"node29\" class=\"node\">\n",
"<title>28</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"271.6296,-145.354 213.1658,-145.354 213.1658,-127.354 271.6296,-127.354 271.6296,-145.354\"/>\n",
"<text text-anchor=\"middle\" x=\"242.3977\" y=\"-133.354\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;9 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>28&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M238.6893,-127.1768C233.0496,-113.2198 222.3111,-86.6446 216.0366,-71.1166\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"216.9416,-70.5535 214.8441,-68.1653 214.9946,-71.3403 216.9416,-70.5535\"/>\n",
"<text text-anchor=\"middle\" x=\"205.8024\" y=\"-100.7467\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 29 -->\n",
"<g id=\"node30\" class=\"node\">\n",
"<title>29</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"309.0902,-71.7052 254.4918,-71.7052 254.4918,-53.7052 309.0902,-53.7052 309.0902,-71.7052\"/>\n",
"<text text-anchor=\"middle\" x=\"281.791\" y=\"-59.7052\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ДЖОЭЛ</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;29 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>28&#45;&gt;29</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M247.2281,-127.3232C254.3162,-114.0715 267.545,-89.3391 275.4207,-74.6149\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"276.4319,-74.9504 276.9211,-71.8098 274.5802,-73.9599 276.4319,-74.9504\"/>\n",
"<text text-anchor=\"middle\" x=\"284.4357\" y=\"-102.569\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;30 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>28&#45;&gt;30</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M241.871,-145.5971C241.0101,-160.7045 239.3015,-190.687 238.3417,-207.5303\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"237.2827,-207.6606 238.1602,-210.7155 239.3793,-207.7801 237.2827,-207.6606\"/>\n",
"<text text-anchor=\"middle\" x=\"232.1025\" y=\"-178.1637\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 31 -->\n",
"<g id=\"node32\" class=\"node\">\n",
"<title>31</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"99.8302,-245.9577 50.0565,-245.9577 50.0565,-227.9577 99.8302,-227.9577 99.8302,-245.9577\"/>\n",
"<text text-anchor=\"middle\" x=\"74.9434\" y=\"-233.9577\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">СКОТТ</text>\n",
"</g>\n",
"<!-- 50 -->\n",
"<g id=\"node51\" class=\"node\">\n",
"<title>50</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"405.9846,-434.967 330.5305,-434.967 330.5305,-416.967 405.9846,-416.967 405.9846,-434.967\"/>\n",
"<text text-anchor=\"middle\" x=\"368.2575\" y=\"-422.967\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">глава manaa</text>\n",
"</g>\n",
"<!-- 33&#45;&gt;50 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>33&#45;&gt;50</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M334.739,-366.7687C341.652,-378.978 353.8498,-400.521 361.4692,-413.9779\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"360.7233,-414.7917 363.1152,-416.8849 362.5507,-413.7569 360.7233,-414.7917\"/>\n",
"<text text-anchor=\"middle\" x=\"336.5475\" y=\"-391.9733\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 34 -->\n",
"<g id=\"node35\" class=\"node\">\n",
"<title>34</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"259.4539,-549.8452 200.9901,-549.8452 200.9901,-531.8452 259.4539,-531.8452 259.4539,-549.8452\"/>\n",
"<text text-anchor=\"middle\" x=\"230.222\" y=\"-537.8452\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 34&#45;&gt;5 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>34&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M252.4507,-531.8335C261.2745,-528.2562 271.4674,-524.1239 280.5565,-520.4391\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"280.9534,-521.4113 283.3391,-519.311 280.1643,-519.4651 280.9534,-521.4113\"/>\n",
"<text text-anchor=\"middle\" x=\"243.3923\" y=\"-519.7363\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 34&#45;&gt;6 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>34&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M230.6986,-531.7736C231.4735,-517.0246 233.0072,-487.8297 233.8781,-471.2516\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"234.9341,-471.1632 234.0431,-468.1122 232.837,-471.053 234.9341,-471.1632\"/>\n",
"<text text-anchor=\"middle\" x=\"209.1771\" y=\"-503.1126\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 34&#45;&gt;14 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>34&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M227.0039,-550.0149C222.1096,-563.9603 212.7906,-590.5134 207.3455,-606.0285\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"206.3133,-605.7988 206.3106,-608.9773 208.2948,-606.4943 206.3133,-605.7988\"/>\n",
"<text text-anchor=\"middle\" x=\"195.6141\" y=\"-579.6217\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 34&#45;&gt;17 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>34&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M200.8498,-534.9573C200.0293,-534.7928 199.2024,-534.6271 198.3706,-534.4603\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"198.2888,-533.3731 195.1409,-533.8129 197.876,-535.4321 198.2888,-533.3731\"/>\n",
"<text text-anchor=\"middle\" x=\"177.6825\" y=\"-536.3088\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">ATTRIBUTE</text>\n",
"</g>\n",
"<!-- 34&#45;&gt;25 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>34&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M239.1843,-549.9072C249.1437,-559.9776 265.2519,-576.2651 276.1206,-587.2549\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"275.6357,-588.2578 278.4918,-589.6525 277.1288,-586.7811 275.6357,-588.2578\"/>\n",
"<text text-anchor=\"middle\" x=\"236.0919\" y=\"-570.1811\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 35 -->\n",
"<g id=\"node36\" class=\"node\">\n",
"<title>35</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"712.9326,-547.3764 654.4688,-547.3764 654.4688,-529.3764 712.9326,-529.3764 712.9326,-547.3764\"/>\n",
"<text text-anchor=\"middle\" x=\"683.7007\" y=\"-535.3764\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 35&#45;&gt;23 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>35&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M683.5751,-547.4683C683.3791,-561.6489 683.0002,-589.0662 682.7785,-605.1085\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"681.728,-605.1437 682.7363,-608.1579 683.8278,-605.1728 681.728,-605.1437\"/>\n",
"<text text-anchor=\"middle\" x=\"661.6162\" y=\"-577.8884\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 49 -->\n",
"<g id=\"node50\" class=\"node\">\n",
"<title>49</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"794.1074,-535.5943 730.2706,-535.5943 730.2706,-517.5943 794.1074,-517.5943 794.1074,-535.5943\"/>\n",
"<text text-anchor=\"middle\" x=\"762.189\" y=\"-523.5943\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">СИГУРНИ</text>\n",
"</g>\n",
"<!-- 35&#45;&gt;49 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>35&#45;&gt;49</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M712.9268,-533.9892C717.619,-533.2848 722.5159,-532.5497 727.3241,-531.828\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"727.4928,-532.8645 730.3037,-531.3807 727.181,-530.7878 727.4928,-532.8645\"/>\n",
"<text text-anchor=\"middle\" x=\"708.5698\" y=\"-526.5086\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 35&#45;&gt;52 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>35&#45;&gt;52</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M673.3098,-529.294C663.2548,-520.5051 647.9801,-507.1539 637.1077,-497.6505\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"637.6703,-496.7478 634.7205,-495.564 636.2883,-498.3289 637.6703,-496.7478\"/>\n",
"<text text-anchor=\"middle\" x=\"647.2048\" y=\"-515.0723\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 36 -->\n",
"<g id=\"node37\" class=\"node\">\n",
"<title>36</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"111.6239,-423.9128 19.8704,-423.9128 19.8704,-405.9128 111.6239,-405.9128 111.6239,-423.9128\"/>\n",
"<text text-anchor=\"middle\" x=\"65.7472\" y=\"-411.9128\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">ORGANIZATION</text>\n",
"</g>\n",
"<!-- 36&#45;&gt;20 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>36&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M58.7639,-424.0064C57.5831,-425.544 56.3406,-427.1619 55.1113,-428.7627\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"53.9236,-428.5853 52.9292,-431.6042 55.5892,-429.8644 53.9236,-428.5853\"/>\n",
"<text text-anchor=\"middle\" x=\"45.381\" y=\"-427.9845\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">NAME</text>\n",
"</g>\n",
"<!-- 45 -->\n",
"<g id=\"node46\" class=\"node\">\n",
"<title>45</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"100.3513,-393 53.0092,-393 53.0092,-375 100.3513,-375 100.3513,-393\"/>\n",
"<text text-anchor=\"middle\" x=\"76.6802\" y=\"-381\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">MEDIA</text>\n",
"</g>\n",
"<!-- 36&#45;&gt;45 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>36&#45;&gt;45</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M68.9683,-405.8052C70.0265,-402.8131 71.2206,-399.437 72.3474,-396.2509\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"73.4339,-396.3278 73.4443,-393.1494 71.454,-395.6276 73.4339,-396.3278\"/>\n",
"<text text-anchor=\"middle\" x=\"53.5426\" y=\"-394.628\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">PROFILE</text>\n",
"</g>\n",
"<!-- 38 -->\n",
"<g id=\"node39\" class=\"node\">\n",
"<title>38</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"421.4605,-18 379.5952,-18 379.5952,0 421.4605,0 421.4605,-18\"/>\n",
"<text text-anchor=\"middle\" x=\"400.5278\" y=\"-6\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">DATE</text>\n",
"</g>\n",
"<!-- 38&#45;&gt;27 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>38&#45;&gt;27</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M379.258,-12.1778C377.7629,-12.4012 376.2785,-12.623 374.8387,-12.8381\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"374.3881,-11.8437 371.5762,-13.3255 374.6985,-13.9206 374.3881,-11.8437\"/>\n",
"<text text-anchor=\"middle\" x=\"391.7124\" y=\"-14.108\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">MONTH</text>\n",
"</g>\n",
"<!-- 39 -->\n",
"<g id=\"node40\" class=\"node\">\n",
"<title>39</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"243.3119,-306.9248 184.8481,-306.9248 184.8481,-288.9248 243.3119,-288.9248 243.3119,-306.9248\"/>\n",
"<text text-anchor=\"middle\" x=\"214.08\" y=\"-294.9248\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 39&#45;&gt;22 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>39&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M214.9625,-307.1759C216.3537,-321.7598 219.0576,-350.1031 220.6072,-366.347\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"219.5708,-366.5401 220.901,-369.4268 221.6613,-366.3406 219.5708,-366.5401\"/>\n",
"<text text-anchor=\"middle\" x=\"194.6735\" y=\"-338.3615\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 39&#45;&gt;30 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>39&#45;&gt;30</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M216.8758,-288.6498C221.1277,-274.544 229.2238,-247.6856 233.9543,-231.9922\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"234.9928,-232.1849 234.8534,-229.0095 232.9822,-231.5788 234.9928,-232.1849\"/>\n",
"<text text-anchor=\"middle\" x=\"217.4111\" y=\"-261.921\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 47 -->\n",
"<g id=\"node48\" class=\"node\">\n",
"<title>47</title>\n",
"<polygon fill=\"#eeeeee\" stroke=\"transparent\" points=\"178.1796,-368.6432 134.3201,-368.6432 134.3201,-350.6432 178.1796,-350.6432 178.1796,-368.6432\"/>\n",
"<text text-anchor=\"middle\" x=\"156.2498\" y=\"-356.6432\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">БЭЙЛ</text>\n",
"</g>\n",
"<!-- 39&#45;&gt;47 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>39&#45;&gt;47</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M205.5469,-307.0316C195.2965,-317.9712 178.0932,-336.3312 166.9598,-348.2132\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"166.1029,-347.592 164.8179,-350.4991 167.6354,-349.0279 166.1029,-347.592\"/>\n",
"<text text-anchor=\"middle\" x=\"164.6928\" y=\"-329.2224\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 42 -->\n",
"<g id=\"node43\" class=\"node\">\n",
"<title>42</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"131.9015,-51.8551 90.0361,-51.8551 90.0361,-33.8551 131.9015,-33.8551 131.9015,-51.8551\"/>\n",
"<text text-anchor=\"middle\" x=\"110.9688\" y=\"-39.8551\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">DATE</text>\n",
"</g>\n",
"<!-- 46 -->\n",
"<g id=\"node47\" class=\"node\">\n",
"<title>46</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"187.2749,-255.3482 128.8111,-255.3482 128.8111,-237.3482 187.2749,-237.3482 187.2749,-255.3482\"/>\n",
"<text text-anchor=\"middle\" x=\"158.043\" y=\"-243.3482\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 46&#45;&gt;19 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>46&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M148.2523,-255.5548C137.6545,-265.5205 120.7371,-281.4287 109.2876,-292.1952\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"108.5404,-291.4566 107.0741,-294.2767 109.979,-292.9864 108.5404,-291.4566\"/>\n",
"<text text-anchor=\"middle\" x=\"105.6587\" y=\"-275.475\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">FIRSTNAME</text>\n",
"</g>\n",
"<!-- 46&#45;&gt;30 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>46&#45;&gt;30</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M184.9928,-237.342C193.9911,-234.335 203.9711,-230.9998 212.8016,-228.0489\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"213.4865,-228.9271 215.999,-226.9803 212.8208,-226.9354 213.4865,-228.9271\"/>\n",
"<text text-anchor=\"middle\" x=\"190.8933\" y=\"-226.2955\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">SEX</text>\n",
"</g>\n",
"<!-- 46&#45;&gt;31 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>46&#45;&gt;31</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M128.5112,-243.011C120.2015,-242.072 111.1902,-241.0537 102.9711,-240.1249\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"103.0806,-239.0807 99.9816,-239.7871 102.8447,-241.1674 103.0806,-239.0807\"/>\n",
"<text text-anchor=\"middle\" x=\"115.7412\" y=\"-235.1679\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">LASTNAME</text>\n",
"</g>\n",
"<!-- 48 -->\n",
"<g id=\"node49\" class=\"node\">\n",
"<title>48</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"81.9688,-43 40.1035,-43 40.1035,-25 81.9688,-25 81.9688,-43\"/>\n",
"<text text-anchor=\"middle\" x=\"61.0362\" y=\"-31\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">DATE</text>\n",
"</g>\n",
"<!-- 48&#45;&gt;13 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>48&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M40.0145,-36.852C34.857,-37.5517 29.4623,-38.2836 24.7315,-38.9254\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"24.405,-37.91 21.5734,-39.3538 24.6873,-39.9909 24.405,-37.91\"/>\n",
"<text text-anchor=\"middle\" x=\"32.373\" y=\"-31.4887\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">DAY</text>\n",
"</g>\n",
"<!-- 48&#45;&gt;42 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>48&#45;&gt;42</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M82.2121,-37.7554C83.6474,-38.0099 85.0999,-38.2675 86.5499,-38.5246\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"86.7822,-39.6321 89.9195,-39.1222 87.149,-37.5644 86.7822,-39.6321\"/>\n",
"<text text-anchor=\"middle\" x=\"68.8243\" y=\"-39.74\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">HIGHER</text>\n",
"</g>\n",
"<!-- 51 -->\n",
"<g id=\"node52\" class=\"node\">\n",
"<title>51</title>\n",
"<polygon fill=\"#aec7e8\" stroke=\"transparent\" points=\"582.2821,-229.3163 523.8182,-229.3163 523.8182,-211.3163 582.2821,-211.3163 582.2821,-229.3163\"/>\n",
"<text text-anchor=\"middle\" x=\"553.0502\" y=\"-217.3163\" font-family=\"sans\" font-size=\"10.00\" fill=\"#000000\">PERSON</text>\n",
"</g>\n",
"<!-- 51&#45;&gt;2 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>51&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M547.3101,-229.4815C539.9778,-241.1894 527.2736,-261.4745 519.2064,-274.3555\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"518.1625,-274.0443 517.46,-277.1441 519.9422,-275.1589 518.1625,-274.0443\"/>\n",
"<text text-anchor=\"middle\" x=\"515.0356\" y=\"-253.5185\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">IDENTITY</text>\n",
"</g>\n",
"<!-- 51&#45;&gt;7 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>51&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M582.1773,-224.3066C582.2199,-224.3124 582.2626,-224.3183 582.3052,-224.3241\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"579.3177,-224.9727 582.4332,-224.3416 579.6041,-222.8922 579.3177,-224.9727\"/>\n",
"<text text-anchor=\"middle\" x=\"600.4639\" y=\"-217.9153\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">IDENTITY</text>\n",
"</g>\n",
"<!-- 51&#45;&gt;26 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>51&#45;&gt;26</title>\n",
"<path fill=\"none\" stroke=\"#c0c0c0\" d=\"M548.7323,-211.2513C542.8801,-198.9651 532.4109,-176.9858 525.8615,-163.2359\"/>\n",
"<polygon fill=\"#c0c0c0\" stroke=\"#c0c0c0\" points=\"526.6846,-162.522 524.4465,-160.2651 524.7887,-163.4251 526.6846,-162.522\"/>\n",
"<text text-anchor=\"middle\" x=\"515.3692\" y=\"-188.8436\" font-family=\"sans\" font-size=\"8.00\" fill=\"#c0c0c0\">ATTRIBUTE</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"Graph(\n",
" nodes={Node(\n",
" item='1',\n",
" style=style(\n",
" attributes={'label': '1', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='8',\n",
" style=style(\n",
" attributes={'label': '8', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='FEMALE',\n",
" style=style(\n",
" attributes={'label': 'FEMALE', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='MALE',\n",
" style=style(\n",
" attributes={'label': 'MALE', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='MEDIA ACTION NETWORK FOR ASIAN AMERICANS',\n",
" style=style(\n",
" attributes={'label': 'MEDIA ACTION NETWORK FOR ASIAN AMERICANS',\n",
" 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='MEDIA',\n",
" style=style(\n",
" attributes={'label': 'MEDIA', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='THE GUARDIAN',\n",
" style=style(\n",
" attributes={'label': 'THE GUARDIAN', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='АОКИ',\n",
" style=style(\n",
" attributes={'label': 'АОКИ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='БЭЙЛ',\n",
" style=style(\n",
" attributes={'label': 'БЭЙЛ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ВЕНКАТ',\n",
" style=style(\n",
" attributes={'label': 'ВЕНКАТ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ВЕНКАТА',\n",
" style=style(\n",
" attributes={'label': 'ВЕНКАТА', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ГАЙ',\n",
" style=style(\n",
" attributes={'label': 'ГАЙ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ДЖОЭЛ',\n",
" style=style(\n",
" attributes={'label': 'ДЖОЭЛ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ДЭВИС',\n",
" style=style(\n",
" attributes={'label': 'ДЭВИС', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ДЭЙМОН',\n",
" style=style(\n",
" attributes={'label': 'ДЭЙМОН', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='КАПУР',\n",
" style=style(\n",
" attributes={'label': 'КАПУР', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='КАПУРА',\n",
" style=style(\n",
" attributes={'label': 'КАПУРА', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='КРИСТИАН',\n",
" style=style(\n",
" attributes={'label': 'КРИСТИАН', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='МАКЕНЗИ',\n",
" style=style(\n",
" attributes={'label': 'МАКЕНЗИ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='МЭТТ',\n",
" style=style(\n",
" attributes={'label': 'МЭТТ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='РИДЛИ',\n",
" style=style(\n",
" attributes={'label': 'РИДЛИ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='СИГУРНИ',\n",
" style=style(\n",
" attributes={'label': 'СИГУРНИ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='СКОТТ',\n",
" style=style(\n",
" attributes={'label': 'СКОТТ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='УИВЕР',\n",
" style=style(\n",
" attributes={'label': 'УИВЕР', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='УИРА',\n",
" style=style(\n",
" attributes={'label': 'УИРА', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ЧИВЕТЕЛЬ ЭДЖИОФОР',\n",
" style=style(\n",
" attributes={'label': 'ЧИВЕТЕЛЬ ЭДЖИОФОР', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ЧИВЕТЛИ ЭДЖИОФОР',\n",
" style=style(\n",
" attributes={'label': 'ЧИВЕТЛИ ЭДЖИОФОР', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ЭДГЕРТОН',\n",
" style=style(\n",
" attributes={'label': 'ЭДГЕРТОН', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='ЭНДИ',\n",
" style=style(\n",
" attributes={'label': 'ЭНДИ', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='афробританский артист',\n",
" style=style(\n",
" attributes={'label': 'афробританский артист',\n",
" 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='белая актриса',\n",
" style=style(\n",
" attributes={'label': 'белая актриса', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='глава manaa',\n",
" style=style(\n",
" attributes={'label': 'глава manaa', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='индиец',\n",
" style=style(\n",
" attributes={'label': 'индиец', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item='организация',\n",
" style=style(\n",
" attributes={'label': 'организация', 'fillcolor': '#eeeeee'}\n",
" )\n",
" ), Node(\n",
" item=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='DAY',\n",
" value='8'\n",
" ), Slot(\n",
" key='HIGHER',\n",
" value=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='MONTH',\n",
" value='10'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'DATE', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='MONTH',\n",
" value='1'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'DATE', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='MONTH',\n",
" value='10'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'DATE', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='PROFILE',\n",
" value='MEDIA'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='THE GUARDIAN'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ORGANIZATION', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='организация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='MEDIA ACTION NETWORK FOR ASIAN AMERICANS'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ORGANIZATION', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='афробританский артист'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSONPROPERTY', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSONPROPERTY', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSONPROPERTY', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSONPROPERTY', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЕЛЬ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЛИ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='афробританский артист'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='LASTNAME',\n",
" value='КАПУР'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='КАПУРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТА'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭВИС'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МАКЕНЗИ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИВЕР'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='СИГУРНИ'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='АОКИ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ГАЙ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='БЭЙЛ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='КРИСТИАН'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭЙМОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МЭТТ'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='СКОТТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='РИДЛИ'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ЭНДИ'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" ), Node(\n",
" item=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЭДГЕРТОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ДЖОЭЛ'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'PERSON', 'fillcolor': '#aec7e8'}\n",
" )\n",
" )},\n",
" edges={Edge(\n",
" source=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='DAY',\n",
" value='8'\n",
" ), Slot(\n",
" key='HIGHER',\n",
" value=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='MONTH',\n",
" value='10'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='8',\n",
" style=style(\n",
" attributes={'label': 'DAY'}\n",
" )\n",
" ), Edge(\n",
" source=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='DAY',\n",
" value='8'\n",
" ), Slot(\n",
" key='HIGHER',\n",
" value=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='MONTH',\n",
" value='10'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='MONTH',\n",
" value='10'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'HIGHER'}\n",
" )\n",
" ), Edge(\n",
" source=DateReferent(\n",
" label='DATE',\n",
" slots=[Slot(\n",
" key='MONTH',\n",
" value='1'\n",
" )]\n",
" ),\n",
" target='1',\n",
" style=style(\n",
" attributes={'label': 'MONTH'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='PROFILE',\n",
" value='MEDIA'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='THE GUARDIAN'\n",
" )]\n",
" ),\n",
" target='MEDIA',\n",
" style=style(\n",
" attributes={'label': 'PROFILE'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='PROFILE',\n",
" value='MEDIA'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='THE GUARDIAN'\n",
" )]\n",
" ),\n",
" target='THE GUARDIAN',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='организация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='MEDIA ACTION NETWORK FOR ASIAN AMERICANS'\n",
" )]\n",
" ),\n",
" target='MEDIA ACTION NETWORK FOR ASIAN AMERICANS',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='организация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='MEDIA ACTION NETWORK FOR ASIAN AMERICANS'\n",
" )]\n",
" ),\n",
" target='организация',\n",
" style=style(\n",
" attributes={'label': 'TYPE'}\n",
" )\n",
" ), Edge(\n",
" source=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='афробританский артист'\n",
" )]\n",
" ),\n",
" target='афробританский артист',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" ),\n",
" target='белая актриса',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" ),\n",
" target='глава manaa',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" ),\n",
" target='индиец',\n",
" style=style(\n",
" attributes={'label': 'NAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЕЛЬ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЛИ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='афробританский артист'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ЧИВЕТЕЛЬ ЭДЖИОФОР',\n",
" style=style(\n",
" attributes={'label': 'IDENTITY'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЕЛЬ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЛИ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='афробританский артист'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ЧИВЕТЛИ ЭДЖИОФОР',\n",
" style=style(\n",
" attributes={'label': 'IDENTITY'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЕЛЬ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='IDENTITY',\n",
" value='ЧИВЕТЛИ ЭДЖИОФОР'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='афробританский артист'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='афробританский артист'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ATTRIBUTE'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='LASTNAME',\n",
" value='КАПУР'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='КАПУРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТА'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ВЕНКАТ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='LASTNAME',\n",
" value='КАПУР'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='КАПУРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТА'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ВЕНКАТА',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='LASTNAME',\n",
" value='КАПУР'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='КАПУРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТА'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='КАПУР',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='LASTNAME',\n",
" value='КАПУР'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='КАПУРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТА'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='КАПУРА',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='LASTNAME',\n",
" value='КАПУР'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='КАПУРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ВЕНКАТА'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='индиец'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ATTRIBUTE'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭВИС'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МАКЕНЗИ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='FEMALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭВИС'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МАКЕНЗИ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ДЭВИС',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭВИС'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МАКЕНЗИ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='МАКЕНЗИ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭВИС'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МАКЕНЗИ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='белая актриса'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ATTRIBUTE'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИВЕР'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='СИГУРНИ'\n",
" )]\n",
" ),\n",
" target='FEMALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИВЕР'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='СИГУРНИ'\n",
" )]\n",
" ),\n",
" target='СИГУРНИ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='FEMALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИВЕР'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='СИГУРНИ'\n",
" )]\n",
" ),\n",
" target='УИВЕР',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='АОКИ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ГАЙ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='MALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='АОКИ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ГАЙ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='АОКИ',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='АОКИ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ГАЙ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target='ГАЙ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='АОКИ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ГАЙ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" target=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" ),\n",
" style=style(\n",
" attributes={'label': 'ATTRIBUTE'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='БЭЙЛ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='КРИСТИАН'\n",
" )]\n",
" ),\n",
" target='MALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='БЭЙЛ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='КРИСТИАН'\n",
" )]\n",
" ),\n",
" target='БЭЙЛ',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='БЭЙЛ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='КРИСТИАН'\n",
" )]\n",
" ),\n",
" target='КРИСТИАН',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭЙМОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МЭТТ'\n",
" )]\n",
" ),\n",
" target='MALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭЙМОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МЭТТ'\n",
" )]\n",
" ),\n",
" target='ДЭЙМОН',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ДЭЙМОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='МЭТТ'\n",
" )]\n",
" ),\n",
" target='МЭТТ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='СКОТТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='РИДЛИ'\n",
" )]\n",
" ),\n",
" target='MALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='СКОТТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='РИДЛИ'\n",
" )]\n",
" ),\n",
" target='РИДЛИ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='СКОТТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='РИДЛИ'\n",
" )]\n",
" ),\n",
" target='СКОТТ',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ЭНДИ'\n",
" )]\n",
" ),\n",
" target='MALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ЭНДИ'\n",
" )]\n",
" ),\n",
" target='УИРА',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ЭНДИ'\n",
" )]\n",
" ),\n",
" target='ЭНДИ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЭДГЕРТОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ДЖОЭЛ'\n",
" )]\n",
" ),\n",
" target='MALE',\n",
" style=style(\n",
" attributes={'label': 'SEX'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЭДГЕРТОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ДЖОЭЛ'\n",
" )]\n",
" ),\n",
" target='ДЖОЭЛ',\n",
" style=style(\n",
" attributes={'label': 'FIRSTNAME'}\n",
" )\n",
" ), Edge(\n",
" source=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='ЭДГЕРТОН'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ДЖОЭЛ'\n",
" )]\n",
" ),\n",
" target='ЭДГЕРТОН',\n",
" style=style(\n",
" attributes={'label': 'LASTNAME'}\n",
" )\n",
" )}\n",
")"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result.graph"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"Организация Media Action Network for Asian Americans, отстаивающая \n",
"0--------------------------------------------------- \n",
"интересы американцев азиатского происхождения, обвинила Ридли Скотта в\n",
" 1----------- \n",
" том, что он взял на роли монголоидных персонажей «Марсианина» актеров\n",
" с белым и черным цветом кожи. Об этом сообщает The Guardian. «Этот \n",
" 2----------- \n",
"духоподъемный фильм, который, по слухам, уже претендует на \"Оскар\", \n",
"точно не заслуживает наград за кастинг», — заявил глава MANAA Гай \n",
" 3---------------\n",
"Аоки. Недовольство организации вызвал тот факт, что два азиатских \n",
"---- \n",
"персонажа одноименного романа Энди Уира, по которому поставлен \n",
" 4-------- \n",
"«Марсианин», в экранном варианте поменяли цвет кожи. Минди Парк, \n",
"которая в первоисточнике была кореянкой, сыграла белая актриса Макензи\n",
" 5--------------------\n",
" Дэвис. Роль индийца Венката Капура исполнил афробританский артист \n",
"------ 6--------------------- 7---------------------\n",
"Чиветель Эджиофор. Его персонаж получил и новое имя — Винсент. По \n",
"----------------- \n",
"словам Аоки, тем самым режиссер упустил возможность предоставить \n",
" 8--- \n",
"большие роли талантливым актерам-монголоидам и не дал представителям \n",
"азиатско-американской диаспоры поучаствовать в ленте. «Марсианин» \n",
"вышел в российский прокат 8 октября. Речь в картине, где главную роль \n",
" 9-------- \n",
"сыграл Мэтт Дэймон, идет об астронавте, в одиночестве оказавшемся на \n",
" 10--------- \n",
"Марсе после эвакуации остальной экспедиции. Ридли Скотта не впервые \n",
" 11---------- \n",
"обвиняют в подобной практике подбора актеров. Вышедший в январе \n",
" 12---- \n",
"2015-го библейский эпос «Исход: Цари и боги» был раскритикован за то, \n",
"что египтян и израильтян в нем сыграли белые актеры, такие как \n",
"Кристиан Бэйл, Джоэл Эдгертон и Сигурни Уивер.\n",
"13----------- 14------------ 15----------- \n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n"
]
},
{
"data": {
"text/plain": [
"Match(\n",
" referent=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='TYPE',\n",
" value='организация'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='MEDIA ACTION NETWORK FOR ASIAN AMERICANS'\n",
" )]\n",
" ),\n",
" span=Span(\n",
" start=0,\n",
" stop=52\n",
" ),\n",
" children=[]\n",
")"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n"
]
},
{
"data": {
"text/plain": [
"Match(\n",
" referent=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='СКОТТ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='РИДЛИ'\n",
" )]\n",
" ),\n",
" span=Span(\n",
" start=123,\n",
" stop=135\n",
" ),\n",
" children=[]\n",
")"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
},
{
"data": {
"text/plain": [
"Match(\n",
" referent=OrganizationReferent(\n",
" label='ORGANIZATION',\n",
" slots=[Slot(\n",
" key='PROFILE',\n",
" value='MEDIA'\n",
" ), Slot(\n",
" key='NAME',\n",
" value='THE GUARDIAN'\n",
" )]\n",
" ),\n",
" span=Span(\n",
" start=255,\n",
" stop=267\n",
" ),\n",
" children=[]\n",
")"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n"
]
},
{
"data": {
"text/plain": [
"Match(\n",
" referent=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='АОКИ'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ГАЙ'\n",
" ), Slot(\n",
" key='ATTRIBUTE',\n",
" value=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" )\n",
" )]\n",
" ),\n",
" span=Span(\n",
" start=393,\n",
" stop=413\n",
" ),\n",
" children=[Match(\n",
" referent=PersonPropertyReferent(\n",
" label='PERSONPROPERTY',\n",
" slots=[Slot(\n",
" key='NAME',\n",
" value='глава manaa'\n",
" )]\n",
" ),\n",
" span=Span(\n",
" start=393,\n",
" stop=404\n",
" ),\n",
" children=[]\n",
" )]\n",
")"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"4\n"
]
},
{
"data": {
"text/plain": [
"Match(\n",
" referent=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ЭНДИ'\n",
" )]\n",
" ),\n",
" span=Span(\n",
" start=505,\n",
" stop=514\n",
" ),\n",
" children=[]\n",
")"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"spans = []\n",
"for index, match in enumerate(result.matches):\n",
" span = MarkupSpan(*match.span, index)\n",
" spans.append(span)\n",
"display(AsciiMarkup(text, spans))\n",
"\n",
"for index, match in enumerate(result.matches[:5]):\n",
" print(index)\n",
" display(match) "
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Match(\n",
" referent=PersonReferent(\n",
" label='PERSON',\n",
" slots=[Slot(\n",
" key='SEX',\n",
" value='MALE'\n",
" ), Slot(\n",
" key='LASTNAME',\n",
" value='УИРА'\n",
" ), Slot(\n",
" key='FIRSTNAME',\n",
" value='ЭНДИ'\n",
" )]\n",
" ),\n",
" span=Span(\n",
" start=505,\n",
" stop=514\n",
" ),\n",
" children=[]\n",
")"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"referent\": {\n",
" \"label\": \"PERSON\",\n",
" \"slots\": [\n",
" {\n",
" \"key\": \"SEX\",\n",
" \"value\": \"MALE\"\n",
" },\n",
" {\n",
" \"key\": \"LASTNAME\",\n",
" \"value\": \"УИРА\"\n",
" },\n",
" {\n",
" \"key\": \"FIRSTNAME\",\n",
" \"value\": \"ЭНДИ\"\n",
" }\n",
" ]\n",
" },\n",
" \"span\": {\n",
" \"start\": 505,\n",
" \"stop\": 514\n",
" },\n",
" \"children\": []\n",
"}\n"
]
}
],
"source": [
"display(match)\n",
"show_json(match.as_json)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"# Stats"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"# [('ORGANIZATION', 2068),\n",
"# ('DATE', 2031),\n",
"# ('GEO', 1724),\n",
"# ('PERSON', 1285),\n",
"# ('PERSONPROPERTY', 1192),\n",
"# ('MONEY', 327),\n",
"# ('NAMEDENTITY', 191),\n",
"# ('DATERANGE', 85),\n",
"# ('DECREE', 56),\n",
"# ('STREET', 55),\n",
"# ('TRANSPORT', 52),\n",
"# ('DECREEPART', 23),\n",
"# ('URI', 19),\n",
"# ('WEAPON', 6),\n",
"# ('ADDRESS', 5),\n",
"# ('PHONE', 5)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"# DATE\n",
"# [(('HIGHER', pullenti.ner.date.DateReferent.DateReferent), 944),\n",
"# (('MONTH', str), 710),\n",
"# (('DAY', str), 588),\n",
"# (('YEAR', str), 561),\n",
"# (('POINTER', str), 141),\n",
"# (('DAYOFWEEK', str), 83),\n",
"# (('HOUR', str), 21),\n",
"# (('MINUTE', str), 21),\n",
"# (('CENTURY', str), 10)]\n",
"# GEO\n",
"# [(('NAME', str), 3695),\n",
"# (('TYPE', str), 1834),\n",
"# (('ALPHA2', str), 974),\n",
"# (('HIGHER', pullenti.ner.geo.GeoReferent.GeoReferent), 71),\n",
"# (('REF', pullenti.ner.geo.GeoReferent.GeoReferent), 2)]\n",
"# ORGANIZATION\n",
"# [(('NAME', str), 2965),\n",
"# (('TYPE', str), 2011),\n",
"# (('PROFILE', str), 1778),\n",
"# (('GEO', pullenti.ner.geo.GeoReferent.GeoReferent), 552),\n",
"# (('HIGHER', pullenti.ner._org.OrganizationReferent.OrganizationReferent),\n",
"# 165),\n",
"# (('NUMBER', str), 13),\n",
"# (('MISC', str), 8),\n",
"# (('EPONYM', str), 6),\n",
"# (('GENERAL', pullenti.ner._org.OrganizationReferent.OrganizationReferent), 2),\n",
"# (('OWNER', pullenti.ner.person.PersonPropertyReferent.PersonPropertyReferent),\n",
"# 2)]\n",
"# PERSONPROPERTY\n",
"# [(('NAME', str), 1192),\n",
"# (('REF', pullenti.ner._org.OrganizationReferent.OrganizationReferent), 343),\n",
"# (('REF', pullenti.ner.geo.GeoReferent.GeoReferent), 324),\n",
"# (('HIGHER',\n",
"# pullenti.ner.person.PersonPropertyReferent.PersonPropertyReferent),\n",
"# 112),\n",
"# (('REF', pullenti.ner.person.PersonReferent.PersonReferent), 47),\n",
"# (('GENERAL',\n",
"# pullenti.ner.person.PersonPropertyReferent.PersonPropertyReferent),\n",
"# 17)]\n",
"# PERSON\n",
"# [(('FIRSTNAME', str), 1398),\n",
"# (('LASTNAME', str), 1350),\n",
"# (('SEX', str), 1215),\n",
"# (('ATTRIBUTE',\n",
"# pullenti.ner.person.PersonPropertyReferent.PersonPropertyReferent),\n",
"# 966),\n",
"# (('MIDDLENAME', str), 51),\n",
"# (('IDENTITY', str), 36),\n",
"# (('AGE', str), 34),\n",
"# (('NICKNAME', str), 11),\n",
"# (('NAMETYPE', str), 7),\n",
"# (('DIE', pullenti.ner.date.DateReferent.DateReferent), 2),\n",
"# (('CONTACT', pullenti.ner.phone.PhoneReferent.PhoneReferent), 1),\n",
"# (('BORN', pullenti.ner.date.DateReferent.DateReferent), 1)]\n",
"# NAMEDENTITY\n",
"# [(('KIND', str), 191),\n",
"# (('NAME', str), 185),\n",
"# (('TYPE', str), 120),\n",
"# (('REF', pullenti.ner._org.OrganizationReferent.OrganizationReferent), 12),\n",
"# (('REF', pullenti.ner.geo.GeoReferent.GeoReferent), 11)]\n",
"# DATERANGE\n",
"# [(('TO', pullenti.ner.date.DateReferent.DateReferent), 85),\n",
"# (('FROM', pullenti.ner.date.DateReferent.DateReferent), 58)]\n",
"# MONEY\n",
"# [(('CURRENCY', str), 327), (('VALUE', str), 327), (('REST', str), 9)]\n",
"# DECREE\n",
"# [(('TYPE', str), 56),\n",
"# (('NAME', str), 49),\n",
"# (('GEO', pullenti.ner.geo.GeoReferent.GeoReferent), 19),\n",
"# (('SOURCE', pullenti.ner._org.OrganizationReferent.OrganizationReferent), 6),\n",
"# (('NUMBER', str), 1),\n",
"# (('DATE', pullenti.ner.date.DateRangeReferent.DateRangeReferent), 1)]\n",
"# DECREEPART\n",
"# [(('OWNER', pullenti.ner.decree.DecreeReferent.DecreeReferent), 22),\n",
"# (('CLAUSE', str), 21),\n",
"# (('NAME', str), 13),\n",
"# (('PART', str), 9),\n",
"# (('ITEM', str), 3),\n",
"# (('LOCALTYP', str), 1),\n",
"# (('CHAPTER', str), 1)]\n",
"# TRANSPORT\n",
"# [(('TYPE', str), 56),\n",
"# (('KIND', str), 52),\n",
"# (('MODEL', str), 37),\n",
"# (('BRAND', str), 27),\n",
"# (('NAME', str), 17),\n",
"# (('STATE', pullenti.ner.geo.GeoReferent.GeoReferent), 7),\n",
"# (('ROUTEPOINT', pullenti.ner.geo.GeoReferent.GeoReferent), 4),\n",
"# (('ORG', pullenti.ner._org.OrganizationReferent.OrganizationReferent), 3),\n",
"# (('DATE', pullenti.ner.date.DateReferent.DateReferent), 1),\n",
"# (('NUMBER', str), 1),\n",
"# (('NUMBER_REG', str), 1)]\n",
"# WEAPON\n",
"# [(('MODEL', str), 7), (('TYPE', str), 4), (('BRAND', str), 2)]\n",
"# STREET\n",
"# [(('NAME', str), 73),\n",
"# (('TYP', str), 55),\n",
"# (('GEO', pullenti.ner.geo.GeoReferent.GeoReferent), 35),\n",
"# (('NUMBER', str), 2)]\n",
"# URI\n",
"# [(('SCHEME', str), 19), (('VALUE', str), 19)]\n",
"# ADDRESS\n",
"# [(('STREET', pullenti.ner.address.StreetReferent.StreetReferent), 6),\n",
"# (('HOUSE', str), 3),\n",
"# (('GEO', pullenti.ner.geo.GeoReferent.GeoReferent), 3),\n",
"# (('DETAIL', str), 1)]\n",
"# PHONE\n",
"# [(('NUMBER', str), 5), (('KIND', str), 3), (('COUNTRYCODE', str), 1)]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "mypy36",
"language": "python",
"name": "mypy36"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment