Files
diw/__pycache__/xpathSearch.cpython-312.pyc

50 lines
5.8 KiB
Plaintext
Raw Normal View History

2025-01-08 17:43:24 +09:00
<EFBFBD>
<00><>xg)<00><00>X<00>ddlmZddlmZddlZGd<04>d<05>Zd<06>Zedk(re<06>yy)<08>)<01>etree)<01>SequenceMatcherNc<00>,<00>eZdZd<01>Zd<02>Zdd<03>Zd<04>Zd<05>Zy)<08>XMLPathHandlerc<00>v<00>tj|<01>|_|jj<00>|_y)us
XML 파일을 로드하고 처리하는 핸들러
:param xml_file_path: XML 파일 경로
N)r<00>parse<73>tree<65>getroot<6F>root)<02>self<6C> xml_file_paths <20>/C:\Users\dra\project\HWP-Scoring\xpathSearch.py<70>__init__zXMLPathHandler.__init__s(<00><00>
<1A>K<EFBFBD>K<EFBFBD> <0A>.<2E><04> <09><18>I<EFBFBD>I<EFBFBD>%<25>%<25>'<27><04> <09>c<00>8<00>td||<02>j<00>S)u^
두 문자열의 유사도를 계산
:return: 유사도 점수 (0~1)
N)r<00>ratio)r <00>a<>bs r<00>similarzXMLPathHandler.similars<00><00>
<1F>t<EFBFBD>Q<EFBFBD><01>*<2A>0<>0<>2<>2rc<00><><00>d|<02>d|<03>d<03>}|jj|<05>}d}d}|D]8} | j|<03>}
|
<EFBFBD><01>|j||
<EFBFBD>} | |kDs<01>/| |kDs<01>5|
}| }<08>:||fS)u;
XML에서 유사한 텍스트를 찾음
:param search_value: 찾고자 하는 텍스트
:param element_name: 검색할 요소 이름
:param arg_name: 검색할 속성 이름
:param threshold: 유사도 임계값
:return: 가장 유사한 텍스트와 점수
<20>//<2F>[@<40>]Nr)r <00>xpath<74>getr) r <00> search_value<75> element_name<6D>arg_name<6D> thresholdr<00>elements<74>
best_match<EFBFBD>
best_score<EFBFBD>element<6E>
attr_value<EFBFBD>scores r<00>find_similar_textz XMLPathHandler.find_similar_texts<><00><00><15>\<5C>N<EFBFBD>"<22>X<EFBFBD>J<EFBFBD>a<EFBFBD>0<><05><17>9<EFBFBD>9<EFBFBD>?<3F>?<3F>5<EFBFBD>)<29><08><19>
<EFBFBD><16>
<EFBFBD><1F>G<EFBFBD> <20><1B><1B>X<EFBFBD>.<2E>J<EFBFBD><19>%<25><1C> <0C> <0C>\<5C>:<3A>><3E><05><18>9<EFBFBD>$<24><15><1A>);<3B>!+<2B>J<EFBFBD>!&<26>J<EFBFBD>  <20><1A>:<3A>%<25>%rc<00>D<00><01>t<00>fd<01>dD<00><00>sy|j<00>d<00>d<00>d<00>\}}|rid<07>d<00>d<08>d<00>d |<02>d
<EFBFBD>}d <0B>vrN<72>d rI<72>d jd<08>d<00>d <0C>d<08>d<00>d |<02>d
<EFBFBD><05>}|jd<08>d<00>d <0A>d<08>d<00>d |<02>d
<EFBFBD><05>}|||fSy)u<>
설정 항목을 기반으로 XPath 생성
:param item: 설정 항목
:return: 구성된 XPath와 매칭된 텍스트, 유사도 점수
c3<00>&<00>K<00>|]}|<01>v<00><01><00>
y<00>w)N<>)<03>.0<EFBFBD>key<65>items <20>r<00> <genexpr>z-XMLPathHandler.build_xpath.<locals>.<genexpr>5s<00><><00><><00>H<>*G<>3<EFBFBD>3<EFBFBD>$<24>;<3B>*G<>s<00>)<03>ele<6C>arg<72> searchValue)NNrr0r.r/rrz='z']<5D>pathz='']z='searchValue'])<03>allr&<00>replace)r r,<00> matched_textr%rs ` r<00> build_xpathzXMLPathHandler.build_xpath/s<><00><><00> <13>H<>*G<>H<>H<> <20>#<23>4<>4<> <10><1D> <1F> <10><15>K<EFBFBD> <10><15>K<EFBFBD>
<EFBFBD><1B> <0C>e<EFBFBD> <18><18><14>e<EFBFBD><1B> <0A>R<EFBFBD><04>U<EFBFBD> <0B>}<7D>B<EFBFBD>|<7C>n<EFBFBD>B<EFBFBD>G<>E<EFBFBD><16><14>~<7E>$<24>v<EFBFBD>,<2C><1C>V<EFBFBD> <0C>,<2C>,<2C>r<EFBFBD>$<24>u<EFBFBD>+<2B><1D>d<EFBFBD>-C<>r<EFBFBD>$<24>u<EFBFBD>+<2B><1D>VX<56>Ye<59>Xf<58>fh<66>Ei<45>j<><05><1D> <0A> <0A><02>4<EFBFBD><05>;<3B>-<2D><EFBFBD>&G<>2<EFBFBD>d<EFBFBD>SX<53>k<EFBFBD>]<5D>Z\<5C>]i<>\j<>jl<6A>Im<49>n<><05><18>,<2C><05>-<2D> -<2D>rc<00>L<00>i}|j<00>D]Z\}}|id<01>||<|j|<04>\}}}|r. |jj|<05>}|d||||d<03>||d<<00>Sd||d<<00>\|S#tj
$r} dt | <09><00><00>||d<Yd} ~ <09><>d} ~ wwxYw) u
설정된 JSON 설정을 처리
:param config: JSON 설정
:return: 처리된 XPath 결과들
)<02>original_config<69>processed_resultsr0)<05>original_value<75> matched_value<75>similarity_scorer<00>resultsr8zXPath evaluation error: <20>errorNz5Unable to build XPath: missing required configuration)<07>itemsr5r rr<00>XPathEvalError<6F>str)
r <00>configr<r+r,rr4r%<00> xpath_results<74>es
r<00>process_configzXMLPathHandler.process_configLs<><00><00> <15><07><1F><1C><1C><1E>I<EFBFBD>C<EFBFBD><14>#'<27>%'<27><0E>G<EFBFBD>C<EFBFBD>L<EFBFBD>
*.<2E>)9<>)9<>$<24>)?<3F> &<26>E<EFBFBD><<3C><15><14>
P<01>$(<28>I<EFBFBD>I<EFBFBD>O<EFBFBD>O<EFBFBD>E<EFBFBD>$:<3A>M<EFBFBD>*.<2E>}<7D>*=<3D>)5<>,1<>!&<26>#0<> 9<16>G<EFBFBD>C<EFBFBD>L<EFBFBD>!4<>5<>)`<01><07><03> <0C>W<EFBFBD>%<25>+(<28>.<17><0E><> <1D>+<2B>+<2B>P<01>.F<>s<EFBFBD>1<EFBFBD>v<EFBFBD>h<EFBFBD>,O<>G<EFBFBD>C<EFBFBD>L<EFBFBD><17>)<29><>P<01>s<00>,A2<02>2B#<05>B<05>B#N)g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)<08>__name__<5F>
__module__<EFBFBD> __qualname__rrr&r5rDr)rrrrs<00><00>(<28>3<>&<26>2<1D>:rrc<00><><00>ddddddd<07>dd d
d d d d<07>d <0A>}d}t|<01>}|j|<00>}|j<00>D]<5D>\}}td|<04>d<10><03>td|d<00><00><02>d|vrtd|d<00><00><02><00><|d}td|d<00><00><02>td|d<00><00><02>td|d<00><00><02>td|d<00><00><02><00><>y)Nz*//TEXTART[@Text='']/TEXTARTSHAPE/@FontName<6D>TEXTART<52>Textu!즐거운컬러푸드영양교실u 궁서체<EC849C>
)r1r.r/r0<00>value<75>pointszB//PARASHAPE[@Id=//TEXTART[@Text='']/ancestor::P/@ParaShape]/@Align<67> PARASHAPE<50>Align<67>Center<65>)<02>0<>1z-C:\Users\dra\project\HWP-Scoring\output\1.hmlz
Processing config item <20>:zOriginal config: r7r=zError: r8zGenerated XPath: rzMatched text: r:zSimilarity score: r;zResults found: r<)rrDr><00>print)rA<00>xmlPath<74>handlerr<r+<00>result<6C> processeds r<00>mainrZns<00><00>A<01><1C><19>><3E> <20><18> 
<EFBFBD>Y<01><1E><1A>#<23><1D><17> 
<EFBFBD><06>F<EFBFBD>&?<3F>G<EFBFBD><1C>W<EFBFBD>%<25>G<EFBFBD><15>$<24>$<24>V<EFBFBD>,<2C>G<EFBFBD><1F>}<7D>}<7D><EFBFBD> <0B><03>V<EFBFBD> <0A>)<29>#<23><15>a<EFBFBD>0<>1<> <0A>!<21>&<26>):<3A>";<3B>!<<3C>=<3D>><3E> <12>f<EFBFBD> <1C> <11>G<EFBFBD>F<EFBFBD>7<EFBFBD>O<EFBFBD>,<2C>-<2D> .<2E><1E>2<>3<>I<EFBFBD> <11>%<25>i<EFBFBD><07>&8<>%9<>:<3A> ;<3B> <11>N<EFBFBD>9<EFBFBD>_<EFBFBD>#=<3D>"><3E>?<3F> @<40> <11>&<26>y<EFBFBD>1C<31>'D<>&E<>F<> G<> <11>O<EFBFBD>I<EFBFBD>i<EFBFBD>$8<>#9<>:<3A> ;<3B>'r<00>__main__)<08>lxmlr<00>difflibr<00>jsonrrZrEr)rr<00><module>r_s5<00><01><16>#<23> <0B>e<17>e<17>P$<<3C>L <0C>z<EFBFBD><19><08>F<EFBFBD>r