KR20230147908A - Electronic apparatus and method for open source license verification - Google Patents
Electronic apparatus and method for open source license verification Download PDFInfo
- Publication number
- KR20230147908A KR20230147908A KR1020220046844A KR20220046844A KR20230147908A KR 20230147908 A KR20230147908 A KR 20230147908A KR 1020220046844 A KR1020220046844 A KR 1020220046844A KR 20220046844 A KR20220046844 A KR 20220046844A KR 20230147908 A KR20230147908 A KR 20230147908A
- Authority
- KR
- South Korea
- Prior art keywords
- embedding vector
- artificial intelligence
- open source
- intelligence model
- source code
- Prior art date
Links
- 238000012795 verification Methods 0.000 title claims abstract description 55
- 238000000034 method Methods 0.000 title claims abstract description 52
- 239000013598 vector Substances 0.000 claims abstract description 135
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 112
- 230000006870 function Effects 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 238000006243 chemical reaction Methods 0.000 description 12
- 238000013528 artificial neural network Methods 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000010454 slate Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multimedia (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Technology Law (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Analysis (AREA)
Abstract
오픈 소스 라이선스를 검증하는 전자 장치 및 방법이 개시된다. 오픈 소스의 라이선스 검증 방법은 검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 분할하는 단계, 분할된 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환하는 단계, 변환된 시퀀스 형태의 임베딩 벡터 각각을 적재하여 2D 형태의 임베딩 벡터를 생성하고, 학습된 인공 지능 모델에 입력하는 단계 및 학습된 인공 지능 모델을 이용하여 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력하는 단계를 포함한다.An electronic device and method for verifying an open source license are disclosed. The open source license verification method includes the steps of dividing the source code of the software to be verified according to preset standards, converting each part of the divided source code into an embedding vector in the form of a sequence, and converting each of the converted embedding vectors in the form of a sequence. It includes the steps of generating a 2D embedding vector by loading it, inputting it into a learned artificial intelligence model, and outputting information related to open source corresponding to the source code using the learned artificial intelligence model.
Description
본 개시는 오픈 소스 라이선스를 검증하는 전자 장치 및 방법에 관한 것으로, 더욱 상세하게는, 딥 러닝 기반의 인공 지능 모델을 이용한 오픈 소스 라이선스를 검증하는 전자 장치 및 방법에 관한 것이다.This disclosure relates to an electronic device and method for verifying an open source license, and more specifically, to an electronic device and method for verifying an open source license using a deep learning-based artificial intelligence model.
제조사 및 프로그램 개발자는 품질이 검증된 FOSS(Free and Open Source Software)를 사용함으로써 개발 주기를 단축시키고, 개발 비용을 감소시키며 적시 출시(Time To Market)를 통한 시장 선점을 할 수 있는 이점을 얻고 있다.Manufacturers and program developers benefit from using quality-verified FOSS (Free and Open Source Software) to shorten the development cycle, reduce development costs, and dominate the market through time-to-market. .
그러나, 제조사 및 프로그램 개발자가 FOSS를 제품 개발에 사용하는 경우, 오픈 소스 라이선스 감시 단체에 의한 소송을 피하고, 기업과 제품의 브랜딩 이미지의 실추에 대한 위험 부담을 줄이기 위해 제조사 및 프로그램 개발자는 사용하는 FOSS가 라이선스 규약을 준수하는지 필수적으로 검증해야 한다.However, when manufacturers and program developers use FOSS in product development, they use FOSS to avoid lawsuits from open source licensing watchdogs and to reduce the risk of damaging the branding image of companies and products. It is essential to verify that the license terms and conditions are complied with.
일반적으로, 라이선스 검증은 소프트웨어 소스 코드를 기반으로 하여 파일별로 라이선스를 검증한다. 즉, 프로그램 개발자는 소스 코드의 파일 별로 기존에 확보된 컴포넌트 풀(component pool)인 지식 베이스(Knowledge Base)와 매칭하여 라이선스를 검증한다. 이러한 종래의 방식은 검증 대상 코드의 키워드를 중심으로 텍스트 매치를 통해 유사한 오픈 소스 코드를 검색하고, 검색 결과를 리스트 형태로 제공한다. 검증자는 리스트 형태의 검색 결과를 정성적으로 리뷰하여 검증 대상 코드와 오픈 소스 코드의 매칭 여부를 최종적으로 결정한다.Generally, license verification verifies the license for each file based on the software source code. In other words, the program developer verifies the license by matching each source code file with the Knowledge Base, which is an existing component pool. This conventional method searches for similar open source codes through text matches centered on keywords of the code to be verified, and provides the search results in the form of a list. The verifier qualitatively reviews the search results in the form of a list and ultimately decides whether the code subject to verification matches the open source code.
그러나, 종래의 방식은 검증 대상 코드와 매칭되는 오픈 소스 코드의 검색 결과의 정확도가 낮아 검증자에 의한 수동 검증이 반드시 필요하다. 또한, 검증자가 정성적으로 리뷰를 할 때, 휴먼 에러로 인한 검증 실패의 가능성이 존재하는 문제점이 있다.However, the conventional method requires manual verification by a verifier due to the low accuracy of search results for open source code that matches the code to be verified. Additionally, when a verifier performs a qualitative review, there is a possibility of verification failure due to human error.
따라서, 오픈 소스의 라이선스 검증의 정확도를 높이고, 검증 시간 및 비용을 줄일 수 있는 기술에 대한 필요성이 존재한다.Therefore, there is a need for technology that can increase the accuracy of open source license verification and reduce verification time and cost.
본 개시는 상술한 문제점을 해결하기 위한 것으로, 본 개시의 목적은 딥 러닝 인공 지능 모델을 이용하여 오픈 소스의 라이선스 검증의 신뢰도를 높이고 검증 시간 및 비용을 줄이기 위한 것이다.This disclosure is intended to solve the above-mentioned problems, and the purpose of this disclosure is to increase the reliability of open source license verification and reduce verification time and cost by using a deep learning artificial intelligence model.
본 개시의 일 실시 예에 따른 오픈 소스의 라이선스 검증 방법은 검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 분할하는 단계, 상기 분할된 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환하는 단계, 상기 변환된 시퀀스 형태의 임베딩 벡터 각각을 적재하여 2D 형태의 임베딩 벡터를 생성하고, 학습된 인공 지능 모델에 입력하는 단계 및 상기 학습된 인공 지능 모델을 이용하여 상기 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력하는 단계를 포함한다.An open source license verification method according to an embodiment of the present disclosure includes the steps of dividing the source code of the software to be verified according to a preset standard, converting each part of the divided source code into an embedding vector in the form of a sequence, Loading each of the converted sequence-type embedding vectors to generate a 2D-shaped embedding vector and inputting it into a learned artificial intelligence model, and using the learned artificial intelligence model to It includes the step of outputting information.
본 개시의 일 실시 예에 따른 전자 장치는 입력 인터페이스, 메모리 및 프로세서를 포함하고, 상기 프로세서는 상기 입력 인터페이스를 통해 검증 대상 소프트웨어의 소스 코드를 입력받고, 상기 검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 분할하며, 상기 분할된 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환하고, 상기 변환된 시퀀스 형태의 임베딩 벡터 각각을 적재하여 2D 형태의 임베딩 벡터를 생성하고, 학습된 인공 지능 모델에 입력하며, 상기 학습된 인공 지능 모델을 이용하여 상기 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력한다.An electronic device according to an embodiment of the present disclosure includes an input interface, a memory, and a processor, wherein the processor receives the source code of the software to be verified through the input interface, and matches the source code of the software to be verified according to a preset standard. Divide according to, convert each part of the divided source code into an embedding vector in the form of a sequence, load each embedding vector in the converted sequence form to generate a 2D embedding vector, and apply it to the learned artificial intelligence model. input, and output information related to open source corresponding to the source code using the learned artificial intelligence model.
도 1은 본 개시의 일 실시 예에 따른 전자 장치의 블록도이다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구체적인 블록도이다.
도 3은 본 개시의 일 실시 예에 따른 프로세서의 블록도이다.
도 4a 내지 도 4d는 본 개시의 일 실시 예에 따른 임베딩 벡터로 변환하는 과정을 설명하는 도면이다.
도 5a 내지 도 5b는 본 개시의 일 실시 예에 따른 2D 이미지로 변환하는 과정을 설명하는 도면이다.
도 6은 본 개시의 일 실시 예에 따른 오픈 소스의 라이선스 검증 과정과 관련된 동작을 설명하는 도면이다.
도 7은 본 개시의 일 실시 예에 따른 오픈 소스의 라이선스 검증 방법을 설명하는 흐름도이다.1 is a block diagram of an electronic device according to an embodiment of the present disclosure.
Figure 2 is a detailed block diagram of an electronic device according to an embodiment of the present disclosure.
Figure 3 is a block diagram of a processor according to an embodiment of the present disclosure.
4A to 4D are diagrams illustrating a process of converting an embedding vector according to an embodiment of the present disclosure.
5A to 5B are diagrams illustrating a process of converting an image into a 2D image according to an embodiment of the present disclosure.
FIG. 6 is a diagram illustrating operations related to an open source license verification process according to an embodiment of the present disclosure.
Figure 7 is a flowchart illustrating an open source license verification method according to an embodiment of the present disclosure.
이하에서는 첨부된 도면을 참조하여 다양한 실시 예를 보다 상세하게 설명한다. 본 명세서에 기재된 실시 예는 다양하게 변형될 수 있다. 특정한 실시 예가 도면에서 묘사되고 상세한 설명에서 자세하게 설명될 수 있다. 그러나, 첨부된 도면에 개시된 특정한 실시 예는 다양한 실시 예를 쉽게 이해하도록 하기 위한 것일 뿐이다. 따라서, 첨부된 도면에 개시된 특정 실시 예에 의해 기술적 사상이 제한되는 것은 아니며, 개시의 사상 및 기술 범위에 포함되는 모든 균등물 또는 대체물을 포함하는 것으로 이해되어야 한다.Hereinafter, various embodiments will be described in more detail with reference to the attached drawings. The embodiments described herein may be modified in various ways. Specific embodiments may be depicted in the drawings and described in detail in the detailed description. However, the specific embodiments disclosed in the attached drawings are only intended to facilitate understanding of the various embodiments. Accordingly, the technical idea is not limited to the specific embodiments disclosed in the attached drawings, and should be understood to include all equivalents or substitutes included in the spirit and technical scope of the disclosure.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이러한 구성요소들은 상술한 용어에 의해 한정되지는 않는다. 상술한 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. Terms containing ordinal numbers, such as first, second, etc., may be used to describe various components, but these components are not limited by the above-mentioned terms. The above-mentioned terms are used only for the purpose of distinguishing one component from another.
본 명세서에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.In this specification, terms such as “comprise” or “have” are intended to indicate the presence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, but are not intended to indicate the presence of one or more other features. It should be understood that this does not exclude in advance the possibility of the existence or addition of elements, numbers, steps, operations, components, parts, or combinations thereof. When a component is said to be "connected" or "connected" to another component, it is understood that it may be directly connected to or connected to the other component, but that other components may exist in between. It should be. On the other hand, when it is mentioned that a component is “directly connected” or “directly connected” to another component, it should be understood that there are no other components in between.
한편, 본 명세서에서 사용되는 구성요소에 대한 "모듈" 또는 "부"는 적어도 하나의 기능 또는 동작을 수행한다. 그리고, "모듈" 또는 "부"는 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합에 의해 기능 또는 동작을 수행할 수 있다. 또한, 특정 하드웨어에서 수행되어야 하거나 적어도 하나의 프로세서에서 수행되는 "모듈" 또는 "부"를 제외한 복수의 "모듈들" 또는 복수의 "부들"은 적어도 하나의 모듈로 통합될 수도 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.Meanwhile, a “module” or “unit” for a component used in this specification performs at least one function or operation. And, the “module” or “unit” may perform a function or operation by hardware, software, or a combination of hardware and software. Additionally, a plurality of “modules” or a plurality of “units” excluding a “module” or “unit” that must be performed on specific hardware or performed on at least one processor may be integrated into at least one module. Singular expressions include plural expressions unless the context clearly dictates otherwise.
본 개시의 설명에 있어서 각 단계의 순서는 선행 단계가 논리적 및 시간적으로 반드시 후행 단계에 앞서서 수행되어야 하는 경우가 아니라면 각 단계의 순서는 비제한적으로 이해되어야 한다. 즉, 위와 같은 예외적인 경우를 제외하고는 후행 단계로 설명된 과정이 선행단계로 설명된 과정보다 앞서서 수행되더라도 개시의 본질에는 영향이 없으며 권리범위 역시 단계의 순서에 관계없이 정의되어야 한다. 그리고 본 명세서에서 "A 또는 B"라고 기재한 것은 A와 B 중 어느 하나를 선택적으로 가리키는 것뿐만 아니라 A와 B 모두를 포함하는 것도 의미하는 것으로 정의된다. 또한, 본 명세서에서 "포함"이라는 용어는 포함하는 것으로 나열된 요소 이외에 추가로 다른 구성요소를 더 포함하는 것도 포괄하는 의미를 가진다.In the description of the present disclosure, the order of each step should be understood as non-limiting unless the preceding step must be performed logically and temporally prior to the subsequent step. In other words, except for the above exceptional cases, even if the process described as a subsequent step is performed before the process described as a preceding step, the nature of disclosure is not affected, and the scope of rights must also be defined regardless of the order of the steps. In this specification, the term “A or B” is defined not only to selectively indicate either A or B, but also to include both A and B. In addition, the term "included" in this specification has the meaning of including additional components in addition to the elements listed as included.
본 명세서에서는 본 개시의 설명에 필요한 필수적인 구성요소만을 설명하며, 본 개시의 본질과 관계가 없는 구성요소는 언급하지 아니한다. 그리고 언급되는 구성요소만을 포함하는 배타적인 의미로 해석되어서는 아니되며 다른 구성요소도 포함할 수 있는 비배타적인 의미로 해석되어야 한다.In this specification, only essential components necessary for description of the present disclosure are described, and components unrelated to the essence of the present disclosure are not mentioned. And it should not be interpreted in an exclusive sense that includes only the mentioned components, but in a non-exclusive sense that can also include other components.
그 밖에도, 본 개시를 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그에 대한 상세한 설명은 축약하거나 생략한다. 한편, 각 실시 예는 독립적으로 구현되거나 동작될 수도 있지만, 각 실시 예는 조합되어 구현되거나 동작될 수도 있다.In addition, when describing the present disclosure, if it is determined that a detailed description of a related known function or configuration may unnecessarily obscure the gist of the present disclosure, the detailed description thereof is abbreviated or omitted. Meanwhile, each embodiment may be implemented or operated independently, but each embodiment may be implemented or operated in combination.
도 1은 본 개시의 일 실시 예에 따른 전자 장치의 블록도이다.1 is a block diagram of an electronic device according to an embodiment of the present disclosure.
도 1을 참조하면, 전자 장치(100)는 입력 인터페이스(110), 메모리(120) 및 프로세서(130)를 포함한다.Referring to FIG. 1 , the
입력 인터페이스(110)는 사용자로부터 제어 명령을 입력받거나 소스 코드 등을 포함하는 다양한 데이터를 입력받을 수 있다. 예를 들어, 입력 인터페이스(110)는 검증 대상 소프트웨어의 소스 코드를 입력받을 수 있다. 또한, 입력 인터페이스(110)는 오픈 소스의 소스 코드를 입력받을 수 있다. 오픈 소스는 코드가 공개되고 누구나 사용할 수 있는 소프트웨어를 의미한다. 그러나, 규약에 따라 자유롭게 사용할 수 오픈 소스도 있고, 일정한 제약이나 요구 조건을 이행해야 하는 오픈 소스도 있다. 라이선스는 일정한 제약이나 이행해야 할 요구 조건 등의 규약을 의미한다. 본 개시는 오픈 소스 라이선스의 검증과 관련된 실시 예를 설명하지만, 다양한 데이터 및 조건을 수집할 수 있는 다양한 종류의 프로그램 소스에도 적용될 수 있다. 일 실시 예로서, 전자 장치(100)는 오픈 소스의 라이선스 검증을 위한 인공 지능 모델을 학습시킬 수 있다. 그리고, 전자 장치(100)는 학습된 인공 지능 모델을 이용하여 검증 대상 소프트웨어를 대상으로 오픈 소스의 라이선스 검증을 수행할 수 있다. 오픈 소스의 라이선스 검증을 위한 인공 지능 모델의 구체적인 설명은 후술한다.The
전자 장치(100)가 인공 지능 모델을 학습시킬 때, 입력 인터페이스(110)는 학습 데이터로서 오픈 소스의 소스 코드를 입력받을 수 있다. 또는, 전자 장치(100)가 학습된 인공 지능 모델을 이용하여 소프트웨어의 소스 코드를 검증할 때, 입력 인터페이스(110)는 검증 대상 소프트웨어의 소스 코드를 입력받을 수 있다.When the
예를 들어, 입력 인터페이스(110)는 키 패드, 키보드, 터치 패드, 터치 스크린 등으로 구현될 수 있다. 또는, 입력 인터페이스(110)는 입출력 포트로 구현될 수 있다. 입력 인터페이스(110)가 입출력 포트를 포함하는 경우, 입출력 포트는 USB(Universal Serial Bus), PS/2(Personal System/2), HDMI(High-Definition Multimedia Interface), DP(DisplayPort), RGB, DVI(Digital Visual Interface), 썬더볼트, LAN, AUX 등의 포트를 포함할 수 있다. 입력 인터페이스(110)는 입력 장치, 입력부, 입력 모듈 등으로 불릴 수도 있다. 입력 인터페이스(110)가 입출력 기능을 수행하는 경우, 입출력 장치, 입출력부, 입출력 모듈 등으로 불릴 수도 있다.For example, the
메모리(120)는 전자 장치(100)의 기능을 수행하는 데이터, 알고리즘 등을 저장하고, 전자 장치(100)에서 구동되는 프로그램, 명령어 등을 저장할 수 있다. 예를 들어, 메모리(120)는 입력된 오픈 소스의 소스 코드, 입력된 검증 대상 소프트웨어의 소스 코드, 라이선스 검증을 위한 인공 지능 모델, 인공 지능 모델의 학습 과정에서 생성된 데이터, 라이선스 검증 과정에서 생성된 데이터 등을 저장할 수 있다. 메모리(120)에 저장된 알고리즘 또는 인공 지능 모델은 프로세서(130)의 제어에 의해 프로세서(130)로 로딩되어 인공 지능 모델의 학습 과정 또는 라이선스 검증 과정을 수행할 수 있다. 예를 들어, 메모리(190)는 롬, 램, HDD, SSD, 메모리 카드 등의 타입으로 구현될 수 있다.The
프로세서(130)는 전자 장치(100)의 각 구성을 제어할 수 있다. 예를 들어, 프로세서(130)는 데이터를 입력받도록 입력 인터페이스(110)를 제어하고, 입력된 데이터를 저장하도록 메모리(120)를 제어하며, 메모리(120)에 저장된 알고리즘, 인공 지능 모델 또는 데이터를 프로세서(130)로 로딩하도록 메모리(120)를 제어할 수 있다.The
예를 들어, 프로세서(130)는 인공 지능 모델을 학습시키기 위해 아래와 같은 동작을 수행할 수 있다. 프로세서(130)는 메모리(120)에 저장된 인공 지능 모델을 프로세서(130)로 로딩할 수 있다. 그리고, 프로세서(130)는 입력된 오픈 소스의 소스 코드를 기 설정된 기준에 따라 분할할 수 있다. 예를 들어, 기 설정된 기준은 함수, 기 설정된 문자 또는 기 설정된 단어로 설정될 수 있다. 즉, 프로세서(130)는 오픈 소스의 소스 코드에 포함된 함수, 함수에 포함된 기 설정된 문자 또는 함수에 포함된 기 설정된 단어를 기준으로 오픈 소스의 소스 코드를 분할할 수 있다.For example, the
프로세서(130)는 분할된 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환할 수 있다. 예를 들어, 임베딩 벡터는 기 설정된 길이로 설정될 수 있다. 그리고, 프로세서(130)는 변환된 임베딩 벡터의 길이가 기 설정된 길이보다 짧으면, 더미 값을 추가하여 기 설정된 길이의 임베딩 벡터로 변환할 수 있다.The
프로세서(130)는 변환된 시퀀스 형태의 임베딩 벡터 각각을 적재하여 2D 형태의 임베딩 벡터를 생성할 수 있다. 예를 들어, 2D 형태의 임베딩 벡터는 기 설정된 개수의 행을 포함할 수 있다. 그리고, 프로세서(130)는 변환된 임베딩 벡터의 개수가 기 설정된 개수의 행보다 적으면, 나머지 행을 더미 행으로 적재하여 2D 형태의 임베딩 벡터를 생성할 수 있다.The
프로세서(130)는 2D 형태의 임베딩 벡터를 인공 지능 모델에 입력하여 라이선스 검증을 위한 인공 지능 모델을 학습시킬 수 있다. 예를 들어, 프로세서(130)는 오픈 소스에 대응되는 라이선스 정보를 출력하도록 인공 지능 모델을 학습시킬 수 있다. 즉, 인공 지능 모델에 입력된 임베딩 벡터는 오픈 소스의 소스 코드와 관련된 데이터일 수 있다. 그리고, 인공 지능 모델은 오픈 소스에 대응되는 라이선스 정보를 출력하도록 학습될 수 있다. 따라서, 인공 지능 모델은 입력된 임베딩 벡터와 관련된 오픈 소스의 소스 코드에 대응되는 라이선스 정보를 출력하도록 학습될 수 있다.The
일 실시 예로서, 인공 지능 모델의 입력 데이터는 이미지 데이터일 수 있다. 따라서, 프로세서(130)는 생성된 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 예를 들어, 프로세서(130)는 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 색상 코드를 식별할 수 있다. 그리고, 프로세서(130)는 식별된 색상 코드에 대응되는 색상을 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 영역에 할당할 수 있다. 프로세서(130)는 상술한 과정을 통해 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 그리고, 프로세서(130)는 변환된 2D 이미지를 인공 지능 모델에 입력하여 라이선스 검증을 위한 인공 지능 모델을 학습시킬 수 있다.As an example, input data for an artificial intelligence model may be image data. Accordingly, the
전자 장치(100)는 학습된 인공 지능 모델을 이용하여 생성된 소프트웨어에 대한 오픈 소스의 라이선스를 검증할 수 있다. 예를 들어, 입력 인터페이스(110)는 검증 대상 소프트웨어의 소스 코드를 입력받을 수 있다. 프로세서(130)는 입력된 검증 대상 소프트웨어의 소스 코드를 학습된 인공 지능 모델에 입력할 수 있다. 이때, 프로세서(130)는 학습 과정과 유사하게 검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 분할할 수 있다. 그리고, 프로세서(130)는 분할된 검증 대상 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환하고, 각각의 임베딩 벡터를 적재하여 2D 형태의 임베딩 벡터를 생성할 수 있다. 프로세서(130)가 2D 형태의 임베딩 벡터를 학습된 인공 지능 모델에 입력하면, 학습된 인공 지능 모델은 입력된 검증 대상 소스 코드에 대응되는 오픈 소스와 관련된 정보를 제공할 수 있다. 전자 장치는 출력 인터페이스를 포함할 수 있다. 그리고, 전자 장치는 출력 인터페이스를 통해 오픈 소스와 관련된 정보를 출력할 수 있다. 예를 들어, 출력 인터페이스는 디스플레이, 통신 인터페이스, 입출력 포트 등의 형태로 구현될 수 있다. 그리고, 오픈 소스와 관련된 정보는 오픈 소스의 라이선스 정보, 오픈 소스의 소스 코드에 대응되는 검증 대상 소프트웨어의 소스 코드와 관련된 정보를 포함할 수 있다. 즉, 전자 장치(100)는 학습된 인공 지능 모델을 이용하여 검증 대상 소프트웨어가 어떤 오픈 소스의 라이선스 정보에 해당되는지 여부, 검증 대상 소프트웨어의 소스 코드 중 어느 부분이 오픈 소스의 소스 코드에 대응되는지 여부에 대한 정보를 출력할 수 있다.The
한편, 인공 지능 모델에 이미지 데이터를 입력해야 하는 경우, 프로세서(130)는 검증 대상 소프트웨어의 임베딩 벡터를 이미지로 변환할 수 있다. 즉, 프로세서(130)는 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 색상 코드를 식별할 수 있다. 그리고, 프로세서(130)는 식별된 색상 코드에 대응되는 색상을 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 영역에 할당하여 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 프로세서(130)는 변환된 2D 이미지를 학습된 인공 지능 모델에 입력하고, 학습된 인공 지능 모델은 검증 대상 소프트웨어에 대한 오픈 소스와 관련된 정보를 출력할 수 있다.Meanwhile, when image data needs to be input to the artificial intelligence model, the
본 개시에 따른 인공 지능과 관련된 기능은 프로세서(130)와 메모리(120)를 통해 동작될 수 있다. 프로세서(130)는 하나 또는 복수의 프로세서로 구성될 수 있다. 이때, 하나 또는 복수의 프로세서(130)는 CPU, AP, DSP(Digital Signal Processor) 등과 같은 범용 프로세서, GPU, VPU(Vision Processing Unit)와 같은 그래픽 전용 프로세서 또는 NPU와 같은 인공 지능 전용 프로세서일 수 있다. 하나 또는 복수의 프로세서(130)는, 메모리(120)에 저장된 기 정의된 동작 규칙 또는 인공 지능 모델에 따라, 입력 데이터를 처리하도록 제어한다. 또는, 하나 또는 복수의 프로세서(130)가 인공 지능 전용 프로세서인 경우, 인공 지능 전용 프로세서는, 특정 인공 지능 모델의 처리에 특화된 하드웨어 구조로 설계될 수 있다. Functions related to artificial intelligence according to the present disclosure may be operated through the
기 정의된 동작 규칙 또는 인공 지능 모델은 학습을 통해 만들어진 것을 특징으로 한다. 여기서, 학습을 통해 만들어진다는 것은, 기본 인공 지능 모델이 학습 알고리즘에 의하여 다수의 학습 데이터들을 이용하여 학습됨으로써, 원하는 특성(또는, 목적)을 수행하도록 설정된 기 정의된 동작 규칙 또는 인공 지능 모델이 만들어짐을 의미한다. 이러한 학습은 본 개시에 따른 인공 지능이 수행되는 기기 자체에서 이루어질 수도 있고, 별도의 서버 및/또는 시스템을 통해 이루어 질 수도 있다. 학습 알고리즘의 예로는, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)이 있으나, 전술한 예에 한정되지 않는다.Predefined operation rules or artificial intelligence models are characterized by being created through learning. Here, created through learning means that a basic artificial intelligence model is learned using a large number of learning data by a learning algorithm, thereby creating a predefined operation rule or artificial intelligence model set to perform the desired characteristics (or purpose). It means burden. This learning may be accomplished in the device itself that performs artificial intelligence according to the present disclosure, or may be accomplished through a separate server and/or system. Examples of learning algorithms include supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but are not limited to the examples described above.
인공 지능 모델은, 복수의 신경망 레이어들로 구성될 수 있다. 복수의 신경망 레이어들 각각은 복수의 가중치들(weight values)을 갖고 있으며, 이전(previous) 레이어의 연산 결과와 복수의 가중치들 간의 연산을 통해 신경망 연산을 수행한다. 복수의 신경망 레이어들이 갖고 있는 복수의 가중치들은 인공 지능 모델의 학습 결과에 의해 최적화될 수 있다. 예를 들어, 학습 과정 동안 인공 지능 모델에서 획득한 로스(loss) 값 또는 코스트(cost) 값이 감소 또는 최소화되도록 복수의 가중치들이 갱신될 수 있다. 인공 신경망은 심층 신경망(DNN:Deep Neural Network)를 포함할 수 있으며, 예를 들어, CNN (Convolutional Neural Network), DNN (Deep Neural Network), GNN(Graph Neural Network), RNN (Recurrent Neural Network), U-net, LSTM(Long Short-Term Memory), MLP(Multi-Layer Perceptron), RBM (Restricted Boltzmann Machine), DBN (Deep Belief Network), BRDNN(Bidirectional Recurrent Deep Neural Network) 또는 심층 Q-네트워크 (Deep Q-Networks) 등이 있으나, 전술한 예에 한정되지 않는다.An artificial intelligence model may be composed of multiple neural network layers. Each of the plurality of neural network layers has a plurality of weight values, and neural network calculation is performed through calculation between the calculation result of the previous layer and the plurality of weights. Multiple weights of multiple neural network layers can be optimized by the learning results of the artificial intelligence model. For example, a plurality of weights may be updated so that loss or cost values obtained from the artificial intelligence model are reduced or minimized during the learning process. Artificial neural networks may include deep neural networks (DNN), for example, Convolutional Neural Network (CNN), Deep Neural Network (DNN), Graph Neural Network (GNN), Recurrent Neural Network (RNN), U-net, Long Short-Term Memory (LSTM), Multi-Layer Perceptron (MLP), Restricted Boltzmann Machine (RBM), Deep Belief Network (DBN), Bidirectional Recurrent Deep Neural Network (BRDNN), or Deep Q-Network. Q-Networks), etc., but is not limited to the above examples.
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구체적인 블록도이다.Figure 2 is a detailed block diagram of an electronic device according to an embodiment of the present disclosure.
도 2를 참조하면, 전자 장치(100)는 입력 인터페이스(110), 메모리(120), 프로세서(130), 통신 인터페이스(140), 카메라(150), 마이크(160), 디스플레이(170), 스피커(180), 센서(190)를 포함할 수 있다. 입력 인터페이스(110) 및 메모리(120)는 도 1에서 설명한 바와 동일하므로 구체적인 설명을 생략한다.Referring to FIG. 2, the
통신 인터페이스(140)는 외부 장치와 통신을 수행할 수 있다. 예를 들어, 통신 인터페이스(140)는 Wi-Fi, Wi-Fi 다이렉트, 블루투스, 지그비, 3G(3rd Generation), 3GPP(3rd Generation Partnership Project) 및 LTE(Long Term Evolution)의 통신 방식 중 적어도 하나 이상의 통신 방식으로 외부 장치와 통신을 수행할 수 있다. 도 1에서는 전자 장치(100)가 입력 인터페이스(110)를 통해 소스 코드 등을 포함하는 다양한 데이터를 입력받는 실시 예를 설명하였으나, 전자 장치(100)는 외부 장치로부터 통신 인터페이스(140)를 통해 소스 코드 등을 포함하는 다양한 데이터를 수신할 수도 있다. 또한, 전자 장치(100)는 학습된 인공 지능 모델을 이용하여 검증 대상 소프트웨어를 검증하고, 통신 인터페이스(140)를 통해 검증 결과를 외부 장치로 전송할 수 있다. 상술한 통신 인터페이스(140)는 통신 장치, 통신부, 통신 모듈, 송수신부 등으로 지칭될 수 있다.The
카메라(150)는 전자 장치(100)의 주변 환경을 촬영하여 이미지를 생성할 수 있다. 예를 들어, 이미지는 오브젝트를 포함할 수 있다. 또한, 이미지는 스틸 이미지 및 동영상 등을 포함할 수 있다. 예를 들어, 카메라(150)는 CCD 센서, CMOS 센서를 포함할 수 있다. 또한, 카메라(150)는 RGB 카메라, 뎁스 카메라, 광각 카메라, 망원 카메라 등을 포함할 수 있다.The
마이크(160)는 외부의 사운드를 입력받는다. 예를 들어, 전자 장치(100)에 한 개의 마이크가 배치될 수 있고, 복수의 마이크가 배치될 수 있다. 예를 들어, 마이크(160)는 일반 마이크, 서라운드 마이크, 지향성 마이크 등을 포함할 수 있다.The
디스플레이(170)는 프로세서(130)에서 처리된 데이터를 영상으로 출력할 수 있다. 인공 지능 모델 학습 과정에서 디스플레이(170)는 입력된 오픈 소스의 소스 코드에 대응되는 라이선스 정보를 출력할 수 있다. 그리고, 오픈 소스의 라이선스 검증 과정에서 디스플레이(170)는 입력된 검증 대상 소프트웨어의 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력할 수 있다. 예를 들어, 오픈 소스와 관련된 정보는 오픈 소스의 라이선스 정보, 오픈 소스의 소스 코드에 대응되는 검증 대상 소프트웨어의 소스 코드와 관련된 정보 등을 포함할 수 있다. 예를 들어, 디스플레이(170)는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diode), 플렉서블 디스플레이, 터치 스크린 등으로 구현될 수 있다. 디스플레이(170)가 터치 스크린으로 구현되는 경우, 전자 장치(100)는 터치 스크린을 통해 제어 명령을 입력받을 수 있다.The
스피커(180)는 음성 처리가 수행된 음성 신호를 출력한다. 예를 들어, 스피커(180)는 전자 장치(100)에 복수 개가 배치될 수 있고, 프로세서(130)는 배치된 스피커(180)의 위치에 기초하여 각 채널의 사운드를 할당하여 입체 사운드를 출력할 수 있다. 또한, 스피커(180)는 사용자의 입력 명령에 대한 정보, 전자 장치(100)의 상태 관련 정보 또는 동작 관련 정보 등을 음성이나 알림음으로 출력할 수 있다.The
센서(190)는 전자 장치(100) 주변의 물체를 감지할 수 있다. 프로세서(130)는 감지된 신호에 기초하여 제어 명령을 인식하고, 인식된 제어 명령에 대응되는 제어 동작을 수행할 수 있다. 또한, 센서(190)는 전자 장치(100)의 주변 환경 정보를 감지할 수 있다. 프로세서(130)는 센서(190)에서 감지된 주변 환경 정보에 기초하여 대응되는 제어 동작을 수행할 수 있다. 예를 들어, 센서(190)는 가속도 센서, 중력 센서, 자이로 센서, 지자기 센서, 방향 센서, 모션 인식 센서, 근접 센서, 전압계, 전류계, 기압계, 습도계, 온도계, 조도 센서, 열 감지 센서, 터치 센서, 적외선 센서, 초음파 센서 등을 포함할 수 있다.The
전자 장치(100)는 상술한 구성을 모두 포함할 수 있고, 일부 구성을 포함할 수도 있다. 또한, 전자 장치(100)는 상술한 구성 이외에도 다양한 기능을 수행하는 다른 구성을 더 포함할 수도 있다.The
지금까지 일 실시 예로서 하나의 전자 장치(100)가 인공 지능 모델의 학습과 검증을 모두 수행하는 것으로 설명하였다. 그러나, 인공 지능 모델의 학습은 외부 전자 장치에서 수행되고, 학습된 인공 지능 모델을 이용한 오픈 소스의 라이선스 검증은 단말 장치에서 수행될 수 있다. 예를 들어, 외부 전자 장치는 서버, 클라우드, 호스트 장치 등을 포함할 수 있다. 그리고, 단말 장치는 스마트폰, 태블릿 PC, 네비게이션, 슬레이트 PC, 웨어러블 디바이스, 디지털 TV, 데스크탑 컴퓨터, 랩탑 컴퓨터, 키오스크 등을 포함할 수 있다. 즉, 외부 전자 장치는 학습할 인공 지능 모델을 저장하고, 입력 인터페이스 또는 통신 인터페이스를 통해 오픈 소스의 소스 코드 등을 포함하는 데이터를 제공받을 수 있다. 외부 전자 장치는 상술한 과정을 통해 오픈 소스의 라이선스 검증을 위한 인공 지능 모델을 학습시킬 수 있다. 외부 전자 장치는 학습된 인공 지능 모델을 단말 장치로 제공할 수 있다. 예를 들어, 단말 장치는 입력 인터페이스 또는 통신 인터페이스를 통해 학습된 인공 지능 모델을 제공받을 수 있다. 단말 장치는 학습된 인공 지능 모델을 저장하고, 입력 인터페이스 또는 통신 인터페이스를 통해 검증 대상 소프트웨어의 소스 코드를 제공받을 수 있다. 단말 장치는 학습된 인공 지능 모델을 이용하여 검증 대상 소프트웨어의 소스 코드에 대응되는 오픈 소스와 관련된 정보를 제공할 수 있다. 예를 들어, 단말 장치는 출력 인터페이스를 통해 검증 대상 소프트웨어의 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력할 수 있다. 출력 인터페이스는 디스플레이, 통신 인터페이스, 입출력 포트 등을 포함할 수 있다. 따라서, 도 2에 도시된 전자 장치(100)의 블록도 및 설명은 인공 지능 모델의 학습을 수행하는 외부 전자 장치 또는 오픈 소스의 라이선스 검증을 수행하는 단말 장치에 대응될 수 있다.So far, as an example, it has been described that one
도 3은 본 개시의 일 실시 예에 따른 프로세서의 블록도이고, 도 4a 내지 도 4d는 본 개시의 일 실시 예에 따른 임베딩 벡터로 변환하는 과정을 설명하는 도면이며, 도 5a 내지 도 5b는 본 개시의 일 실시 예에 따른 2D 이미지로 변환하는 과정을 설명하는 도면이다. 도 3 내지 도 5b를 함께 참조하여 설명한다.FIG. 3 is a block diagram of a processor according to an embodiment of the present disclosure, FIGS. 4A to 4D are diagrams illustrating a process of converting into an embedding vector according to an embodiment of the present disclosure, and FIGS. 5A to 5B are This is a diagram explaining the process of converting to a 2D image according to an embodiment of the disclosure. The description will be made with reference to FIGS. 3 to 5B.
도 3을 참조하면, 프로세서(130)는 토큰 생성부(131), 임베딩 벡터 변환부(132), 이미지 변환부(133), 모델 학습부(134)를 포함할 수 있다. 도 3에 도시된 각 구성은 소프트웨어로 구현되고 메모리(120)에 저장될 수 있다. 그리고, 각 구성은 인공 지능 모델을 학습할 때 프로세서(130)의 제어에 의해 프로세서(130)로 로딩될 수 있다.Referring to FIG. 3, the
전자 장치(100)가 인공 지능 모델을 학습시킬 때, 전자 장치(100)는 오픈 소스 코드 및 라이선스 정보에 대한 데이터를 수집할 수 있다. 예를 들어, 전자 장치(100)는 입력 인터페이스(110) 또는 통신 인터페이스(140)를 통해 오픈 소스 코드 및 라이선스 정보에 대한 데이터를 수집할 수 있다. 전자 장치(100)는 수집된 오픈 소스 코드 및 라이선스 정보에 대한 데이터를 메모리(120)에 저장할 수 있다.When the
토큰 생성부(131)는 오픈 소스의 소스 코드를 기 설정된 기준에 따라 토큰으로 변환할 수 있다. 예를 들어, 프로세서(130)는 오픈 소스의 소스 코드의 언어 타입을 식별할 수 있다. 그리고, 프로세서(130)는 식별된 언어 타입에 기초하여 기 설정된 단위의 토큰으로 변환할 수 있다. 예를 들어, 기 설정된 기준(또는, 단위)는 오픈 소스의 소스 코드에 포함된 함수, 함수에 포함된 기 설정된 문자, 함수에 포함된 기 설정된 단어일 수 있다. 토큰은 기 설정된 기준에 따라 오픈 소스의 소스 코드를 분할한 각 부분을 의미할 수 있다. 또한, 프로세서(130)는 식별된 언어 타입에 따라 기 설정된 노이즈를 제거하는 정규화 과정을 수행할 수 있다. 예를 들어, 의미가 없는 단어, 반복되는 단어 등이 노이즈로 설정될 수 있고, 프로세서(130)는 설정된 기준에 따라 노이즈를 제거할 수 있다.The
도 4a에 도시된 바와 같이, 토큰 생성부(131)는 오픈 소스의 소스 코드(11)를 기 설정된 기준에 따라 토큰(21)으로 변환할 수 있다. 일 실시 예로서, 도 4b에 도시된 바와 같이, 토큰 생성부(131)는 소스 코드(11)에서 시작 지점과 종료 지점을 식별하고, 프로그램이 수행되는 순서를 식별할 수 있다. 일 실시 예로서, 도 4b를 참조하면, 토큰 생성부(131)는 prepare_handle_locker(), dynamic_load(), debug(), return 함수 또는 명령어의 순서로 오픈 소스의 소스 코드(11)가 수행된다고 식별할 수 있다. 토큰 생성부(131)는 ‘_’(언더 바) 단위로 소스 코드(11)를 분할할 수 있다. 따라서, 토큰 생성부(131)는 prepare_handle_locker()에서 prepare(31), handle(32), locker(33)를 각각 하나의 토큰(21)으로 변환(또는, 각 부분으로 분할)할 수 있다.As shown in FIG. 4A, the
임베딩 벡터 변환부(132)는 분할된 소스 코드 부분(토큰) 각각을 시퀀스 형태의 임베딩 벡터로 변환할 수 있다. 임베딩 벡터는 자연어를 장치가 이해할 수 있는 숫자로 나열한 형태를 의미한다. 예를 들어, 임베딩 벡터 변환부(132)는 NNLM(Neural Network Language Model), Word2Vec, GloVe, FastText, Doc2Vec, Bert 등의 알고리즘을 이용하여 분할된 소스 코드 각각을 임베딩 벡터로 변환할 수 있다. 임베딩 벡터는 기 설정된 길이로 설정될 수 있다. 일 실시 예로서, 임베딩 벡터는 128 byte의 길이로 설정될 수 있다. 만일, 변환된 임베딩 벡터가 120 byte인 경우, 임베딩 벡터 변환부(132)는 나머지 8 byte 부분에 더미 값을 추가할 수 있다.The embedding
임베딩 벡터 변환부(132)는 변환된 시퀀스 형태의 임베딩 벡터를 적재하여 2D 형태의 임베딩 벡터를 생성할 수 있다. 2D 형태의 임베딩 벡터는 기 설정된 개수의 행을 포함할 수 있다. 일 실시 예로서, 2D 형태의 임베딩 벡터는 16개의 행을 포함할 수 있다. 만일, 적재된 시퀀스 형태의 임베딩 벡터가 14개인 경우, 임베딩 벡터 변환부(132)는 나머지 2개의 행을 더미 행으로 적재할 수 있다.The embedding
일 실시 예로서, 도 4c 및 도 4d에 도시된 바와 같이, 임베딩 벡터 변환부(132)는 토큰 생성부(131)에서 분할된 소스 코드(11)의 각 부분을 시퀀스 형태의 임베딩 벡터(21)로 변환할 수 있다. 그리고, 임베딩 벡터 변환부(132)는 임베딩 벡터를 적재하여 2D 형태의 임베딩 벡터를 생성할 수 있다. 한편, 도 4d에 도시된 바와 같이, 임베딩 벡터(21)는 n byte의 길이로 설정될 수 있고, 2D 형태의 임베딩 벡터는 m 개의 행을 포함할 수 있다. 임베딩 벡터 변환부(132)는 변환된 임베딩 벡터가 n byte의 길이보다 짧으면, 더미 값(41-1, 41-2, 41-3)을 추가하여 n byte의 길이의 임베딩 벡터로 변환할 수 있다. 또한, 임베딩 벡터 변환부(132)는 변환됨 임베딩 벡터의 개수가 m개 보다 적으면, 나머지 행을 더미 행으로 적재하여 m개 행을 포함하는 2D 형태의 임베딩 벡터를 생성할 수 있다. 도 4a 내지 도 4d에 도시된 예는 일 실시 예이며, 본 개시는 도시된 예에 한정되는 것은 아니다.As an embodiment, as shown in FIGS. 4C and 4D, the embedding
모델 학습부(134)는 라이선스 검증을 위한 인공 지능 모델을 학습시킬 수 있다. 모델 학습부(134)는 2D 형태의 임베딩 벡터를 전달받고, 인공 지능 모델에 입력 데이터로 입력시킬 수 있다. 인공 지능 모델은 입력된 임베딩 벡터와 관련된 오픈 소스에 대응되는 라이선스 정보를 출력하도록 학습될 수 있다. 예를 들어, 인공 지능 모델은 CNN, GNN, RNN, U-net, LSTM, MLP 기반의 모델을 포함할 수 있다.The
만일, 인공 지능 모델이 이미지를 입력받는 CNN, U-net 등을 기반으로 하는 모델인 경우, 인공 지능 모델의 입력 데이터는 이미지일 수 있다. 이미지 변환부(133)는 인공 지능 모델에 입력하기 위한 이미지 데이터를 생성할 수 있다. 즉, 이미지 변환부(133)는 임베딩 벡터 변환부(132)에서 생성된 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 예를 들어, 이미지 변환부(133)는 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 색상 코드를 식별할 수 있다. 그리고, 이미지 변환부(133)는 식별된 색상 코드에 대응되는 색상을 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 영역에 할당할 수 있다. 이미지 변환부(133)는 상술한 과정을 통해 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 모델 학습부(134)는 2D 이미지를 인공 지능 모델에 입력하여 인공 지능 모델을 학습시킬 수 있다.If the artificial intelligence model is a model based on CNN, U-net, etc. that receives image input, the input data of the artificial intelligence model may be an image. The
도 4d에 도시된 바와 같이, 임베딩 벡터(21)는 일련의 특정 값을 포함할 수 있다. 그리고, 도 5a에 도시된 바와 같이, 각 색상에는 색상 코드가 할당되어 있다. 일 실시 예로서, 도 4d의 2D 형태의 임베딩 벡터의 (1, 1)의 값은 0xFF0000이고, 색상 코드로 레드에 대응될 수 있다. 따라서, 이미지 변환부(133)는 2D 형태의 임베딩 벡터의 (1, 1)에 대응되는 2D 이미지의 영역을 레드로 변환할 수 있다. 즉, 이미지 변환부(133)는 색상 코드에 대응되는 색상을 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 영역에 할당하여 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 도 5b에는 상술한 과정을 통해 변환된 2D 이미지(51)의 일 실시 예가 도시되어 있다.As shown in Figure 4D, embedding
도 6은 본 개시의 일 실시 예에 따른 오픈 소스의 라이선스 검증 과정과 관련된 동작을 설명하는 도면이다.FIG. 6 is a diagram illustrating operations related to an open source license verification process according to an embodiment of the present disclosure.
도 6을 참조하면, 검증 대상 소프트웨어의 소스 코드로부터 변환된 2D 이미지(51)를 학습된 인공 지능 모델(52)에 입력하여 결과를 출력하는 과정이 도시되어 있다. 일 실시 예로서, 인공 지능 모델(52)은 CNN, U-net 등을 기반으로 하는 모델일 수 있다.Referring to FIG. 6, the process of inputting a
전자 장치(100)는 상술한 과정과 유사한 과정으로 오픈 소스의 라이선스를 검증할 수 있다. 즉, 인공 지능 모델 학습 과정 및 라이선스 검증 과정에서 전자 장치(100)는 동일한 방식으로 소스 코드를 전처리하고, 전처리가 수행된 데이터를 인공 지능 모델에 입력할 수 있다. The
다만, 인공 지능 모델의 학습 과정에서는 정보를 충분히 알고 있는 오픈 소스의 소스 코드를 전처리한 데이터가 인공 지능 모델의 입력 데이터일 수 있다. 그리고, 인공 지능 모델은 입력된 오픈 소스의 소스 코드에 대응되는 데이터에 기초하여 오류(또는, 오차, 에러)를 수정하는 과정을 통해 학습될 수 있다. 라이선스 검증 과정에서는 검증 대상 소프트웨어의 소스 코드를 전처리한 데이터가 학습된 인공 지능 모델의 입력 데이터일 수 있다. 그리고, 전자 장치(100)는 검증 대상 소프트웨어의 소스 코드에 대응되는 입력 데이터를 학습된 인공 지능 모델에 입력하고, 학습된 인공 지능 모델을 이용하여 검증 대상 소프트웨어의 소스 코드에 대한 오픈 소스와 관련된 정보를 출력할 수 있다.However, in the learning process of an artificial intelligence model, data preprocessed from open source source code with sufficient information may be input data to the artificial intelligence model. And, the artificial intelligence model can be learned through a process of correcting errors (or errors) based on data corresponding to the input open source source code. In the license verification process, data preprocessed from the source code of the software being verified may be input data for a learned artificial intelligence model. Then, the
예를 들어, 전자 장치(100)는 입력 인터페이스(110) 또는 통신 인터페이스(140)를 통해 검증 대상 소프트웨어의 소스 코드를 제공받을 수 있다. 전자 장치(100)는 제공된 검증 대상 소프트웨어의 소스 코드에 대한 데이터를 메모리(120)에 저장할 수 있다. 그리고, 전자 장치(100)는 도 3에서 설명한 각 구성을 프로세서(130)의 제어에 의해 프로세서(130)로 로딩할 수 있다.For example, the
토큰 생성부(131)는 검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 토큰으로 변환할 수 있다. 토큰 생성부(131)는 언어 타입에 따라 기 설정된 단위의 토큰으로 변환할 수 있고, 노이즈를 제거하는 정규화 과정을 수행할 수 있다.The
임베딩 벡터 변환부(132)는 분할된 소스 코드 부분(토큰) 각각을 시퀀스 형태의 임베딩 벡터로 변환할 수 있다. 그리고, 임베딩 벡터 변환부(132)는 변환된 시퀀스 형태의 임베딩 벡터를 적재하여 2D 형태의 임베딩 벡터를 생성할 수 있다.The embedding
만일, 인공 지능 모델(52)이 이미지를 입력받는 CNN, U-net 등을 기반으로 하는 모델인 경우, 이미지 변환부(133)는 임베딩 벡터 변환부(132)에서 생성된 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다.If the
프로세서(130)는 2D 형태의 임베딩 벡터 또는 2D 이미지를 인공 지능 모델(52)에 입력할 수 있다. 인공 지능 모델은 검증 대상 소프트웨어의 소스 코드에 대응되는 오픈 소스와 관련된 정보(53)를 출력할 수 있다. 예를 들어, 오픈 소스와 관련된 정보(53)는 식별된 상기 오픈 소스의 라이선스 정보, 오픈 소스의 소스 코드에 대응되는 검증 대상 소프트웨어의 소스 코드와 관련된 정보 등을 포함할 수 있다. 즉, 프로세서(130)는 출력 인터페이스를 통해 오픈 소스의 라이선스 정보, 검증 대상 소프트웨어의 소스 코드에서 오픈 소스의 소스 코드에 대응되는 코드 부분의 정보 등을 출력할 수 있다.The
지금까지 오픈 소스의 라이선스 검증을 위한 인공 지능 모델을 학습시키고, 학습된 인공 지능 모델을 이용하여 오픈 소스의 라이선스를 검증하는 실시 예를 설명하였다. 아래에서는 오픈 소스 라이선스 검증 방법에 대해 설명한다.So far, we have described an example of training an artificial intelligence model for verifying open source licenses and verifying open source licenses using the learned artificial intelligence model. Below we explain how to verify open source licenses.
도 7은 본 개시의 일 실시 예에 따른 오픈 소스의 라이선스 검증 방법을 설명하는 흐름도이다.Figure 7 is a flowchart illustrating an open source license verification method according to an embodiment of the present disclosure.
도 7을 참조하면, 전자 장치는 검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 분할할 수 있다(S710). 예를 들어, 기 설정된 기준은 함수, 기 설정된 문자 또는 기 설정된 단어 등에 기초하여 설정될 수 있다. 전자 장치는 검증 대상 소프트웨어의 소스 코드에 포함된 함수, 함수에 포함된 기 설정된 문자 또는 함수에 포함된 기 설정된 단어를 기준으로 검증 대상 소프트웨어의 소스 코드를 분할할 수 있다.Referring to FIG. 7, the electronic device may divide the source code of the software to be verified according to a preset standard (S710). For example, the preset standard may be set based on a function, a preset character, or a preset word. The electronic device may divide the source code of the software to be verified based on a function included in the source code of the software to be verified, a preset character included in the function, or a preset word included in the function.
전자 장치는 분할된 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환할 수 있다(S720). 예를 들어, 임베딩 벡터는 기 설정된 길이로 설정될 수 있다. 전자 장치는 변환된 임베딩 벡터의 길이가 기 설정된 길이보다 짧으면, 더미 값을 추가하여 기 설정된 길이의 임베딩 벡터로 변환할 수 있다.The electronic device can convert each part of the divided source code into an embedding vector in the form of a sequence (S720). For example, the embedding vector may be set to a preset length. If the length of the converted embedding vector is shorter than the preset length, the electronic device may add a dummy value and convert it into an embedding vector of the preset length.
전자 장치는 변환된 시퀀스 형태의 임베딩 벡터 각각을 적재하여 2D 형태의 임베딩 벡터를 생성하고, 학습된 인공 지능 모델에 입력할 수 있다(S730). 예를 들어, 2D 형태의 임베딩 벡터는 기 설정된 개수의 행을 포함할 수 있다. 전자 장치는 변환된 임베딩 벡터의 개수가 기 설정된 개수의 행보다 적으면, 나머지 행을 더미 행으로 적재하여 2D 형태의 임베딩 벡터를 생성할 수 있다.The electronic device can load each embedded vector in the converted sequence form to generate a 2D embedding vector and input it to the learned artificial intelligence model (S730). For example, a 2D embedding vector may include a preset number of rows. If the number of converted embedding vectors is less than the preset number of rows, the electronic device may load the remaining rows as dummy rows to generate a 2D embedding vector.
전자 장치는 학습된 인공 지능 모델을 이용하여 검증 대상 소프트웨어의 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력할 수 있다(S740). 예를 들어, 인공 지능 모델은 CNN, GNN, RNN, U-net, LSTM 또는 MLP 기반의 모델일 수 있다. The electronic device may output information related to open source corresponding to the source code of the software to be verified using the learned artificial intelligence model (S740). For example, the artificial intelligence model may be a model based on CNN, GNN, RNN, U-net, LSTM, or MLP.
일 실시 예로서, 인공 지능 모델이 이미지를 입력받는 CNN, U-net 등을 기반의 모델이면, 전자 장치는 생성된 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 예를 들어, 전자 장치는 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 색상 코드를 식별할 수 있다. 그리고, 전자 장치는 식별된 색상 코드에 대응되는 색상을 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 영역에 할당할 수 있다. 전자 장치는 상술한 과정을 통해 2D 형태의 임베딩 벡터를 2D 이미지로 변환할 수 있다. 전자 장치는 2D 이미지를 인공 지능 모델에 입력하고, 검증 대상 소프트웨어의 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력할 수 있다. 예를 들어, 오픈 소스와 관련된 정보는 오픈 소스의 라이선스 정보, 오픈 소스의 소스 코드에 대응되는 검증 대상 소프트웨어의 소스 코드와 관련된 정보 등을 포함할 수 있다.As an example, if the artificial intelligence model is a model based on CNN, U-net, etc. that receives images, the electronic device can convert the generated 2D embedding vector into a 2D image. For example, an electronic device can identify a color code corresponding to each value included in a 2D embedding vector. Additionally, the electronic device may assign a color corresponding to the identified color code to an area corresponding to each value included in the 2D embedding vector. The electronic device can convert a 2D embedding vector into a 2D image through the above-described process. The electronic device can input a 2D image into an artificial intelligence model and output information related to open source corresponding to the source code of the software to be verified. For example, information related to open source may include open source license information, information related to the source code of the software to be verified that corresponds to the open source source code, etc.
상술한 다양한 실시 예에 따른 오픈 소스의 라이선스 검증 방법은 컴퓨터 프로그램 제품으로 제공될 수도 있다. 컴퓨터 프로그램 제품은 S/W 프로그램 자체 또는 S/W 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)를 포함할 수 있다.The open source license verification method according to the various embodiments described above may be provided as a computer program product. A computer program product may include the S/W program itself or a non-transitory computer readable medium in which the S/W program is stored.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다. A non-transitory readable medium refers to a medium that stores data semi-permanently and can be read by a device, rather than a medium that stores data for a short period of time, such as registers, caches, and memories. Specifically, the various applications or programs described above may be stored and provided on non-transitory readable media such as CD, DVD, hard disk, Blu-ray disk, USB, memory card, ROM, etc.
또한, 이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시가 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.In addition, although the preferred embodiments of the present disclosure have been shown and described above, the present disclosure is not limited to the specific embodiments described above, and the technical field to which the disclosure pertains without departing from the gist of the present disclosure as claimed in the claims. Of course, various modifications can be made by those skilled in the art, and these modifications should not be understood individually from the technical idea or perspective of the present disclosure.
100: 전자 장치 110: 입력 인터페이스
120: 메모리 130: 프로세서100: electronic device 110: input interface
120: memory 130: processor
Claims (20)
검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 분할하는 단계;
상기 분할된 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환하는 단계;
상기 변환된 시퀀스 형태의 임베딩 벡터 각각을 적재하여 2D 형태의 임베딩 벡터를 생성하고, 학습된 인공 지능 모델에 입력하는 단계; 및
상기 학습된 인공 지능 모델을 이용하여 상기 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력하는 단계;를 포함하는 오픈 소스의 라이선스 검증 방법.In the open source license verification method,
Dividing the source code of the software to be verified according to preset standards;
Converting each part of the divided source code into an embedding vector in the form of a sequence;
Loading each of the converted sequence-type embedding vectors to generate a 2D-type embedding vector and inputting it into a learned artificial intelligence model; and
An open source license verification method comprising: outputting information related to open source corresponding to the source code using the learned artificial intelligence model.
상기 오픈 소스와 관련된 정보를 출력하는 단계는,
상기 학습된 인공 지능 모델을 이용하여 식별된 상기 오픈 소스의 라이선스 정보 및 상기 오픈 소스의 소스 코드에 대응되는 상기 검증 대상 소프트웨어의 소스 코드와 관련된 정보 중 적어도 하나의 정보를 출력하는, 오픈 소스의 라이선스 검증 방법.According to paragraph 1,
The step of outputting information related to the open source is,
An open source license that outputs at least one of information related to the license information of the open source identified using the learned artificial intelligence model and information related to the source code of the software to be verified corresponding to the source code of the open source. Verification method.
상기 학습된 인공 지능 모델에 입력하는 단계는,
상기 생성된 2D 형태의 임베딩 벡터를 2D 이미지로 변환하는 단계; 및
상기 2D 이미지를 상기 학습된 인공 지능 모델에 입력하는 단계;를 포함하는 오픈 소스의 라이선스 검증 방법.According to paragraph 1,
The step of inputting into the learned artificial intelligence model is,
Converting the generated 2D embedding vector into a 2D image; and
An open source license verification method comprising: inputting the 2D image into the learned artificial intelligence model.
상기 2D 이미지로 변환하는 단계는,
상기 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 색상 코드를 식별하고, 상기 식별된 색상 코드에 대응되는 색상을 상기 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 영역에 할당하여 상기 2D 형태의 임베딩 벡터를 상기 2D 이미지로 변환하는, 오픈 소스의 라이선스 검증 방법.According to paragraph 3,
The step of converting to a 2D image is,
Identify a color code corresponding to each value included in the 2D embedding vector, and assign the color corresponding to the identified color code to an area corresponding to each value included in the 2D embedding vector to create the 2D format. An open source license verification method that converts an embedding vector of the form into the 2D image.
상기 기 설정된 기준은,
함수, 기 설정된 문자 또는 기 설정된 단어를 기초로 설정되고,
상기 기 설정된 기준에 따라 분할하는 단계는,
상기 검증 대상 소프트웨어의 소스 코드에 포함된 함수, 상기 함수에 포함된 기 설정된 문자 또는 상기 함수에 포함된 기 설정된 단어를 기준으로 상기 검증 대상 소프트웨어의 소스 코드를 분할하는, 오픈 소스의 라이선스 검증 방법.According to paragraph 1,
The above preset standards are:
It is set based on a function, a preset character, or a preset word,
The step of dividing according to the preset criteria is,
An open source license verification method that divides the source code of the software to be verified based on a function included in the source code of the software to be verified, a preset character included in the function, or a preset word included in the function.
상기 임베딩 벡터는 기 설정된 길이로 설정되고,
상기 임베딩 벡터로 변환하는 단계는,
상기 변환된 임베딩 벡터의 길이가 상기 기 설정된 길이보다 짧으면, 더미 값을 추가하여 상기 기 설정된 길이의 임베딩 벡터로 변환하는, 오픈 소스의 라이선스 검증 방법.According to paragraph 1,
The embedding vector is set to a preset length,
The step of converting to the embedding vector is,
An open source license verification method where, if the length of the converted embedding vector is shorter than the preset length, a dummy value is added to convert the converted embedding vector into an embedding vector of the preset length.
상기 2D 형태의 임베딩 벡터는 기 설정된 개수의 행을 포함하고,
상기 2D 형태의 임베딩 벡터를 생성하는 단계는,
상기 변환된 임베딩 벡터의 개수가 상기 기 설정된 개수의 행보다 적으면, 나머지 행을 더미 행으로 적재하여 상기 2D 형태의 임베딩 벡터를 생성하는, 오픈 소스의 라이선스 검증 방법.According to paragraph 1,
The 2D embedding vector includes a preset number of rows,
The step of generating the 2D embedding vector is,
If the number of converted embedding vectors is less than the preset number of rows, the remaining rows are loaded as dummy rows to generate the 2D embedding vector.
상기 인공 지능 모델은,
CNN, GNN, RNN, U-net, LSTM 또는 MLP 기반의 모델인, 오픈 소스의 라이선스 검증 방법.According to paragraph 1,
The artificial intelligence model is,
Open source license verification method, models based on CNN, GNN, RNN, U-net, LSTM or MLP.
라이선스 검증을 위한 인공 지능 모델을 학습하는 단계;를 더 포함하는 오픈 소스의 라이선스 검증 방법.According to paragraph 1,
An open source license verification method further comprising: learning an artificial intelligence model for license verification.
상기 라이선스 검증을 위한 인공 지능 모델을 학습하는 단계는,
상기 오픈 소스의 소스 코드를 기 설정된 기준에 따라 분할하는 단계;
상기 분할된 오픈 소스의 소스 코드의 부분 각각을 시퀀스 형태의 학습용 임베딩 벡터로 변환하는 단계;
상기 변환된 시퀀스 형태의 학습용 임베딩 벡터 각각을 적재하여 2D 형태의 학습용 임베딩 벡터를 생성하고, 상기 라이선스 검증을 위한 인공 지능 모델에 입력하는 단계; 및
상기 2D 형태의 학습용 임베딩 벡터에 기초하여 상기 오픈 소스의 소스 코드에 대응되는 정보를 출력하도록 상기 라이선스 검증을 위한 인공 지능 모델을 학습하는 단계;를 포함하는 오픈 소스의 라이선스 검증 방법.According to clause 9,
The step of learning the artificial intelligence model for license verification is,
Dividing the open source source code according to preset criteria;
Converting each part of the divided open source source code into a learning embedding vector in the form of a sequence;
Loading each of the converted sequence-type learning embedding vectors to generate a 2D-type learning embedding vector and inputting it into an artificial intelligence model for license verification; and
An open source license verification method comprising: learning an artificial intelligence model for license verification to output information corresponding to the open source source code based on the 2D learning embedding vector.
메모리; 및
프로세서;를 포함하고,
상기 프로세서는,
상기 입력 인터페이스를 통해 검증 대상 소프트웨어의 소스 코드를 입력받고,
상기 검증 대상 소프트웨어의 소스 코드를 기 설정된 기준에 따라 분할하며,
상기 분할된 소스 코드의 부분 각각을 시퀀스 형태의 임베딩 벡터로 변환하고,
상기 변환된 시퀀스 형태의 임베딩 벡터 각각을 적재하여 2D 형태의 임베딩 벡터를 생성하고, 학습된 인공 지능 모델에 입력하며,
상기 학습된 인공 지능 모델을 이용하여 상기 소스 코드에 대응되는 오픈 소스와 관련된 정보를 출력하는, 전자 장치.input interface;
Memory; and
Including a processor;
The processor,
Receive the source code of the software to be verified through the input interface,
Divide the source code of the software subject to verification according to preset standards,
Converting each part of the divided source code into an embedding vector in the form of a sequence,
Load each of the converted sequence-type embedding vectors to generate a 2D-type embedding vector and input it to the learned artificial intelligence model,
An electronic device that outputs information related to open source corresponding to the source code using the learned artificial intelligence model.
상기 프로세서는,
상기 학습된 인공 지능 모델을 이용하여 식별된 상기 오픈 소스의 라이선스 정보 및 상기 오픈 소스의 소스 코드에 대응되는 상기 검증 대상 소프트웨어의 소스 코드와 관련된 정보 중 적어도 하나의 정보를 출력하는, 전자 장치.According to clause 11,
The processor,
An electronic device that outputs at least one of information related to license information of the open source identified using the learned artificial intelligence model and information related to the source code of the software to be verified corresponding to the source code of the open source.
상기 프로세서는,
상기 생성된 2D 형태의 임베딩 벡터를 2D 이미지로 변환하고, 상기 2D 이미지를 인공 지능 모델에 입력하여 라이선스 검증을 위한 인공 지능 모델을 학습하는, 전자 장치.According to clause 11,
The processor,
An electronic device that converts the generated 2D-shaped embedding vector into a 2D image and inputs the 2D image into an artificial intelligence model to learn an artificial intelligence model for license verification.
상기 프로세서는,
상기 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 색상 코드를 식별하고, 상기 식별된 색상 코드에 대응되는 색상을 상기 2D 형태의 임베딩 벡터에 포함된 각 값에 대응되는 영역에 할당하여 상기 2D 형태의 임베딩 벡터를 상기 2D 이미지로 변환하는, 전자 장치.According to clause 13,
The processor,
Identify a color code corresponding to each value included in the 2D embedding vector, and assign the color corresponding to the identified color code to an area corresponding to each value included in the 2D embedding vector to create the 2D format. An electronic device that converts an embedding vector of a shape into the 2D image.
상기 기 설정된 기준은,
함수, 기 설정된 문자 또는 기 설정된 단어를 기초로 설정되고,
상기 프로세서는,
상기 검증 대상 소프트웨어의 소스 코드에 포함된 함수, 상기 함수에 포함된 기 설정된 문자 또는 상기 함수에 포함된 기 설정된 단어를 기준으로 상기 검증 대상 소프트웨어의 소스 코드를 분할하는, 전자 장치.According to clause 11,
The above preset standards are:
It is set based on a function, a preset character, or a preset word,
The processor,
An electronic device that divides the source code of the software to be verified based on a function included in the source code of the software to be verified, a preset character included in the function, or a preset word included in the function.
상기 임베딩 벡터는 기 설정된 길이로 설정되고,
상기 프로세서는,
상기 변환된 임베딩 벡터의 길이가 상기 기 설정된 길이보다 짧으면, 더미 값을 추가하여 상기 기 설정된 길이의 임베딩 벡터로 변환하는, 전자 장치.According to clause 11,
The embedding vector is set to a preset length,
The processor,
If the length of the converted embedding vector is shorter than the preset length, the electronic device converts it into an embedding vector of the preset length by adding a dummy value.
상기 2D 형태의 임베딩 벡터는 기 설정된 개수의 행을 포함하고,
상기 프로세서는,
상기 변환된 임베딩 벡터의 개수가 상기 기 설정된 개수의 행보다 적으면, 나머지 행을 더미 행으로 적재하여 상기 2D 형태의 임베딩 벡터를 생성하는, 전자 장치.According to clause 11,
The 2D embedding vector includes a preset number of rows,
The processor,
If the number of converted embedding vectors is less than the preset number of rows, the electronic device generates the 2D embedding vector by loading the remaining rows as dummy rows.
상기 인공 지능 모델은,
CNN, GNN, RNN, U-net, LSTM 또는 MLP 기반의 모델인, 전자 장치.According to clause 11,
The artificial intelligence model is,
Electronic devices, models based on CNN, GNN, RNN, U-net, LSTM or MLP.
상기 프로세서는,
라이선스 검증을 위한 인공 지능 모델을 학습시키는, 전자 장치.According to clause 11,
The processor,
An electronic device that trains an artificial intelligence model for license verification.
상기 프로세서는,
상기 오픈 소스의 소스 코드를 기 설정된 기준에 따라 분할하고,
상기 분할된 오픈 소스의 소스 코드의 부분 각각을 시퀀스 형태의 학습용 임베딩 벡터로 변환하며,
상기 변환된 시퀀스 형태의 학습용 임베딩 벡터 각각을 적재하여 2D 형태의 학습용 임베딩 벡터를 생성하고, 상기 라이선스 검증을 위한 인공 지능 모델에 입력하며,
상기 2D 형태의 학습용 임베딩 벡터에 기초하여 상기 오픈 소스의 소스 코드에 대응되는 정보를 출력하도록 상기 라이선스 검증을 위한 인공 지능 모델을 학습시키는, 전자 장치.According to clause 19,
The processor,
Dividing the open source source code according to preset criteria,
Converting each part of the divided open source source code into a learning embedding vector in the form of a sequence,
Load each of the learning embedding vectors in the converted sequence form to generate a 2D learning embedding vector and input it to the artificial intelligence model for license verification,
An electronic device that trains an artificial intelligence model for license verification to output information corresponding to the open source source code based on the 2D learning embedding vector.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220046844A KR20230147908A (en) | 2022-04-15 | 2022-04-15 | Electronic apparatus and method for open source license verification |
PCT/KR2023/002942 WO2023200114A1 (en) | 2022-04-15 | 2023-03-03 | Electronic device and method for verifying open source license |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220046844A KR20230147908A (en) | 2022-04-15 | 2022-04-15 | Electronic apparatus and method for open source license verification |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230147908A true KR20230147908A (en) | 2023-10-24 |
Family
ID=88329810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220046844A KR20230147908A (en) | 2022-04-15 | 2022-04-15 | Electronic apparatus and method for open source license verification |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20230147908A (en) |
WO (1) | WO2023200114A1 (en) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019135425A1 (en) * | 2018-01-04 | 2019-07-11 | 라인플러스 주식회사 | Open source software license verification method and system |
CN109101235B (en) * | 2018-06-05 | 2021-03-19 | 北京航空航天大学 | Intelligent analysis method for software program |
US10983761B2 (en) * | 2019-02-02 | 2021-04-20 | Microsoft Technology Licensing, Llc | Deep learning enhanced code completion system |
US11334467B2 (en) * | 2019-05-03 | 2022-05-17 | International Business Machines Corporation | Representing source code in vector space to detect errors |
KR20230025885A (en) * | 2020-07-28 | 2023-02-23 | 딥마인드 테크놀로지스 리미티드 | Training an action-selection neural network using an auxiliary task to control observation embeddings |
-
2022
- 2022-04-15 KR KR1020220046844A patent/KR20230147908A/en unknown
-
2023
- 2023-03-03 WO PCT/KR2023/002942 patent/WO2023200114A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023200114A1 (en) | 2023-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11450353B2 (en) | Video tagging by correlating visual features to sound tags | |
CN112148275A (en) | Methods, systems, articles of manufacture, and apparatus for context and complexity aware recommendation systems for improved software development efficiency | |
WO2021029523A1 (en) | Techniques for learning effective musical features for generative and retrieval-based applications | |
US20210319090A1 (en) | Authenticator-integrated generative adversarial network (gan) for secure deepfake generation | |
US11455471B2 (en) | System and method for explaining and compressing deep learning natural language understanding (NLU) models | |
JP7277611B2 (en) | Mapping visual tags to sound tags using text similarity | |
KR20200010680A (en) | Automated Facial Expression Recognizing Systems on N frames, Methods, and Computer-Readable Mediums thereof | |
US20230245435A1 (en) | System and method for supervised contrastive learning for multi-modal tasks | |
KR102327026B1 (en) | Device and method for learning assembly code and detecting software weakness based on graph convolution network | |
US11335128B2 (en) | Methods and systems for evaluating a face recognition system using a face mountable device | |
KR20230068989A (en) | Method and electronic device for performing learning of multi-task model | |
US11216431B2 (en) | Providing a compact representation of tree structures | |
WO2023229305A1 (en) | System and method for context insertion for contrastive siamese network training | |
KR20230147908A (en) | Electronic apparatus and method for open source license verification | |
JP6987987B2 (en) | Media feature comparison method and equipment | |
KR20200068553A (en) | Method and apparatus for generating story from plurality of images by using deep learning network | |
WO2022191366A1 (en) | Electronic device and method of controlling same | |
US11854528B2 (en) | Method and system for detecting unsupported utterances in natural language understanding | |
CN106662927A (en) | Motion recognition method and motion recognition device | |
CN116368490A (en) | Electronic device and control method thereof | |
KR20220127642A (en) | Electronic apparatus and control method thereof | |
US20220293090A1 (en) | Electronic apparatus and control method thererof | |
US20240104309A1 (en) | System and method for efficient language model editing using contextual prompt generator | |
CN113032843B (en) | Method and apparatus for obtaining and processing tensor data with digital signature information | |
US20230409701A1 (en) | Electronic apparatus and control method thereof |