U C^B/@sddlmZddlZddlmZmZmZmZddlmZm Z m Z m Z m Z ddl mZmZmZddlmZd Zd ZGd d d eZGd ddeZdS))unicode_literalsN) TPL_DEP_SVG TPL_DEP_WORDS TPL_DEP_ARCSTPL_ENTS)TPL_ENT TPL_ENT_RTL TPL_FIGURE TPL_TITLETPL_PAGE) minify_html escape_htmlregistry)ErrorsenZltrc@sZeZdZdZdZifddZdddZdd Zd d Zd d Z ddZ ddZ ddZ dS)DependencyRendererz!Render dependency parses as SVGs.depcCs|dd|_|dd|_|d|jr,dnd|_|d|jrDd nd |_|d d |_|d |jrjdnd|_|dd|_|dd|_|dd|_ |dd|_ t |_ t |_dS)zInitialise dependency renderer. options (dict): Visualiser-specific options (compact, word_spacing, arrow_spacing, arrow_width, arrow_stroke, distance, offset_x, color, bg, font) compactF word_spacing- arrow_spacing  arrow_width arrow_stroker distanceoffset_x2colorz#000000bgz#fffffffontZArialN)getrrrrrrr"r$r%r& DEFAULT_DIR direction DEFAULT_LANGlang)selfoptionsr.8/tmp/pip-install-6_kvzl1k/spacy/spacy/displacy/render.py__init__szDependencyRenderer.__init__Fc Cstj}g}t|D]d\}}|dkrN|di}|dt|_|dt|_d ||} | | |d|d} | | q|rd d d |D} t j | |j|jd } n d |} |rt| S| S) zRender complete markup. parsed (list): Dependency parses to render. page (bool): Render parses wrapped as full HTML page. minify (bool): Minify HTML markup. RETURNS (unicode): Rendered SVG or HTML markup. rsettingsr)r+z{}-{}wordsarcscSsg|]}tj|dqS)contentr format).0svgr.r.r/ >sz-DependencyRenderer.render..r6r+dir)uuidZuuid4hex enumerater'r(r)r*r+r8 render_svgappendjoinr r) r,parsedpageminifyZ id_prefixrenderedipr1 render_idr:r6markupr.r.r/render)s*     zDependencyRenderer.renderc s|_tj_jdjj_jt|j_jdj _ |_ fddt |D}fddt |D}d |d |}tjj jj jjj|jjd S)a Render SVG. render_id (int): Unique ID, typically index of document. words (list): Individual words and their tags. arcs (list): Individual arcs and their start, end, direction and label. RETURNS (unicode): Rendered SVG markup. r cs&g|]\}}|d|d|qS)texttag) render_word)r9rHwr,r.r/r;Vsz1DependencyRenderer.render_svg..c s2g|]*\}}|d|d|d|d|qS)labelstartendr=) render_arrow)r9rHarRr.r/r;Wsr4) idwidthheightr$r%r&r6r=r+) get_levelslevelslen highest_levelrroffset_yr"rYrrZrXr@rCrr8r$r%r&r)r+)r,rJr2r3r6r.rRr/rAHs,   zDependencyRenderer.render_svgcCsJ|j|j}|j||j}|jdkr0|j|}t|}tj||||dS)zRender individual word. text (unicode): Word text. tag (unicode): Part-of-speech tag. i (int): Unique ID, typically word index. RETURNS (unicode): Rendered SVG markup. rtl)rNrOxy) r_rr"rr)rYrrr8)r,rNrOrHrbraZ html_textr.r.r/rPhs    zDependencyRenderer.render_wordc Cs\|dks|dkr2t||||d}ttjjf||j||d}|j||j|j }|j dkrp|j |}|j } |j|||j||j|j |j |d} |j dkr|j | } |j ||jd} |jr|j ||jd} | dkr t|jdkr |j } |||| | } ||| | | } |j dkrz/DependencyRenderer.get_levels..)setmapsortedlist)r,r3r\r.r.r/r[szDependencyRenderer.get_levelsN)FF) __name__ __module__ __qualname____doc__styler0rLrArPrVrnrmr[r.r.r.r/rs   ,rc@s2eZdZdZdZifddZd ddZdd Zd S) EntityRendererzRender named entities as HTML.entcCsddddddddd d d d d d d d d d d }tj}|D]}||q<||did|_||_|dd|_t |_ t |_ |d}|r||_ n|j dkrt|_ nt|_ dS)zlInitialise dependency renderer. options (dict): Visualiser-specific options (colors, ents) z#7aececz#bfeeb7z#feca74z#ff9561z#aa9cfcz#c887fbz#9cc9ccz#ffeb80z#ff8197z#f0d0ffz#bfe1d9z#e4e7d2)ZORGZPRODUCTZGPEZLOCZPERSONZNORPZFACILITYZEVENTZLAWLANGUAGEZ WORK_OF_ARTZDATEZTIMEZMONEYZQUANTITYZORDINALZCARDINALPERCENTcolorsz#dddentsNrvr`)rZdisplacy_colorsget_allvaluesupdater' default_colorrrr(r)r*r+ ent_templater r)r,r-rZ user_colorsZ user_colorrvr.r.r/r0sD     zEntityRenderer.__init__Fc Csg}t|D]Z\}}|dkrD|di}|dt|_|dt|_|||d|d|dq |rdd d |D}t j ||j|jd } n d|} |rt | S| S) zRender complete markup. parsed (list): Dependency parses to render. page (bool): Render parses wrapped as full HTML page. minify (bool): Minify HTML markup. RETURNS (unicode): Rendered HTML markup. rr1r)r+rNrtitler4cSsg|]}tj|dqSr5r7)r9docr.r.r/r;sz)EntityRenderer.render..r<) r@r'r(r)r*r+rB render_entsrCr r8r) r,rDrErFrGrHrIr1ZdocsrKr.r.r/rLs $ zEntityRenderer.rendercCs:d}d}|D]}|d}|d}|d} |di} t||| } |||d} t| D]8\} }|t|7}t| dkr^| t| dkr^|d 7}q^|jd ks||jkr|j||j}|| |d }| | ||j j f|7}n|| 7}| }q |t||d 7}t j ||j d }|r6tj |d |}|S)zRender entities in text. text (unicode): Original text. spans (list): Individual entity spans and their start, end and label. title (unicode or None): Document title set in Doc.user_data['title']. r4rrSrTrUparams rz
N)rSrNr%)r6r=)r)r'rsplitr@r]rupperrrrrr8rr)r )r,rNZspansrrKoffsetspanrSrTrUZadditional_paramsentityZ fragmentsrHfragmentr$Z ent_settingsr.r.r/r s2     zEntityRenderer.render_entsN)FF)r~rrrrr0rLrr.r.r.r/rs  , r) __future__rr>Z templatesrrrrrr r r r utilrrrerrorsrr*r(objectrrr.r.r.r/s  H