B An],@sddlmZddlZddlmZmZmZmZddlmZm Z m Z m Z m Z ddl mZmZdZd ZGd d d eZGd d d eZdS))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_htmlenltrc@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-x/home/app_decipher_dev_19-4/dev/decipher-analysis/serverless-application/helper/df_spacy/python/spacy/displacy/render.py__init__szDependencyRenderer.__init__Fc Cstj}g}xlt|D]`\}}|dkrL|ddt|_|ddt|_d ||}| ||d|d} | | qW|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))content)r format).0svgr-r-r. ;sz-DependencyRenderer.render..)r4r*dir)uuiduuid4hex enumerater&r'r(r)r*r5 render_svgappendjoinr r) r+parsedpageminifyZ id_prefixrenderedip render_idr7r4markupr-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)r6rEw)r+r-r.r8Ssz1DependencyRenderer.render_svg..c s2g|]*\}}|d|d|d|d|qS)labelstartendr9) render_arrow)r6rEa)r+r-r.r8Usr3) idwidthheightr#r$r%r4r9r*) get_levelslevelslen highest_levelrroffset_yr!rUrrVrTr=r@rr5r#r$r%r(r*)r+rGr1r2r4r-)r+r.r>Es(    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)rKrLxy) r[rr!rr(rUrrr5)r+rKrLrEr^r]Z html_textr-r-r.rMes    zDependencyRenderer.render_wordc Cs&|j||d}|j||j|j}|jdkr>|j|}|j}|j|||j||j|j|j|d} |jdkr|j| } |j||jd} |j r|j||jd} | dkrt |jdkr|j } | |||| } | ||| | } |jdkrdnd } t j|j||j| || | d S) aARender individual arrow. label (unicode): Dependency label. start (int): Index of start word. end (int): Index of end word. direction (unicode): Arrow direction, 'left' or 'right'. i (int): Unique ID, typically arrow index. RETURNS (unicode): Rendered SVG markup. rr\r rrrightleft)rTrEZstrokeheadrO label_sidearc)rXindexr!rrr(rUr[rZrrY get_arrowheadget_arcrr5rTr)r+rOrPrQr(rElevelx_startr^x_endy_curve arrowheadrerdr-r-r.rRts0   2  zDependencyRenderer.render_arrowcCs d}|jrd}|j||||dS)uWRender individual arc. x_start (int): X-coordinate of arrow start point. y (int): Y-coordinate of arrow start and end point. y_curve (int): Y-corrdinate of Cubic Bézier y_curve point. x_end (int): X-coordinate of arrow end point. RETURNS (unicode): Definition of the arc path ('d' attribute). z!M{x},{y} C{x},{c} {e},{c} {e},{y}z M{x},{y} {x},{c} {e},{c} {e},{y})r]r^ce)rr5)r+rjr^rlrktemplater-r-r.rhs zDependencyRenderer.get_arcc Cs||dkr.|||jd||jd}}}n$|||jd||jd}}}||d|||j|||jf}dj|S)aZRender individual arrow head. direction (unicode): Arrow direction, 'left' or 'right'. x (int): X-coordinate of arrow start point. y (int): Y-coordinate of arrow start and end point. end (int): X-coordinate of arrow end point. RETURNS (unicode): Definition of the arrow head path ('d' attribute). rbr zM{},{} L{},{} {},{})rr5) r+r(r]r^rQpos1pos2Zpos3rmr-r-r.rgs &  z DependencyRenderer.get_arrowheadcCsttdd|}tt|S)aCalculate available arc height "levels". Used to calculate arrow heights dynamically and without wasting space. args (list): Individual arcs and their start, end, direction and label. RETURNS (list): Arc levels sorted from lowest to highest. cSs|d|dS)NrQrPr-)rer-r-r.z/DependencyRenderer.get_levels..)setmapsortedlist)r+r2rXr-r-r.rWszDependencyRenderer.get_levelsN)FF) __name__ __module__ __qualname____doc__styler/rIr>rMrRrhrgrWr-r-r-r.rs   )rc@s2eZdZdZdZifddZd ddZdd Zd S) EntityRendererzRender named entities as HTML.entcCsfddddddddd d d d d d d d d d d }||did|_||_|dd|_t|_t|_dS)zlInitialise dependency renderer. options (dict): Visualiser-specific options (colors, ents) z#7aececz#bfeeb7z#feca74z#ff9561z#aa9cfcz#c887fbz#9cc9ccz#ffeb80z#ff8197z#f0d0ffz#bfe1d9z#e4e7d2)ORGPRODUCTGPELOCPERSONNORPFACILITYEVENTLAWLANGUAGE WORK_OF_ARTDATETIMEMONEYQUANTITYORDINALCARDINALPERCENTcolorsz#dddentsN) updater& default_colorrrr'r(r)r*)r+r,rr-r-r.r/s0zEntityRenderer.__init__Fc Csg}x`t|D]T\}}|dkrB|ddt|_|ddt|_|||d|d|dqW|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. rr0r(r*rKrtitler3cSsg|]}tj|dqS))r4)r r5)r6docr-r-r.r8sz)EntityRenderer.render..)r4r*r9) r=r&r'r(r)r*r? render_entsr@r r5r) r+rArBrCrDrErFdocsrHr-r-r.rIs$ zEntityRenderer.rendercCsFd}d}x|D]}|d}|d}|d} t||| } |||d} xDt| D]8\} } |t| 7}t| dkrV| t| dkrV|d7}qVW|jd ks||jkr|j||j}|| |d }|j d kr|t j f|7}n|t j f|7}n|| 7}| }qW|t||d 7}t j ||j d }|rBtj |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']. r3rrOrPrQ rz
N)rOrKr$r\)r4r9)r)rsplitr=rYrupperrr&rr(r r5rrr )r+rKspansrrHoffsetspanrOrPrQentityZ fragmentsrEfragmentr#Z ent_settingsr-r-r.r s2     zEntityRenderer.render_entsN)FF)ryrzr{r|r}r/rIrr-r-r-r.r~s  r~) __future__rr:Z templatesrrrrrr r r r utilrrr)r'objectrr~r-r-r-r.s D