IP Library Granted Patent US 12,361,124
Granted Patent B2
US 12,361,124 · App. 18/233,657 · Granted Jul 15, 2025

Unstructured text classification

Inventors: Arunkumar Gururajan (Redmond, WA); Jack Wilson Stokes, III (Redmond, WA); Farid Tajaddodianfar (Redmond, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F21/554G06F16/9566G06N5/04G06N20/00G06F2221/034
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,361,124
App. No.
18/233,657
Granted
Jul 15, 2025
Kind
B2
Abstract

The technology described herein identifies malicious URLs using a classifier that is both accurate and fast. Aspects of the technology are particularly well adapted for use as a real-time URL security analysis tool because the technology is able to quickly process a URL and produce a warning when a malicious URL is identified. The rapid processing speed of the technology described herein is produced, in part, by use of only a single input signal, which is the URL itself. The high accuracy produced by the technology described herein is achieved by analyzing the unstructured text on both a character-by-character level and a word-by-word level. The technology described herein uses both character-level and word-level information from the incoming URL.

Claims (59)

1. One or more computer storage media having computer-executable instructions embodied thereon that, when executed, by one or more processors, causes the one or more processors to perform a method for detecting a malicious URL, the method comprising:

receiving a URL;

forming, from the URL, a first contextual-word embedding that represents a first word identified in the URL and a context of the first word in the URL;

forming, from the URL, a second contextual-word embedding that represents a second word identified in the URL and a context of the second word in the URL;

processing the first contextual-word embedding in a first parallel component processing leg in a word-level path of the URL classifier, the first parallel component processing leg having a first filter length, a first convolutional layer, and a first max pooling layer following the first convolutional layer;

processing the second contextual-word embedding in a second parallel component processing leg in a word-level path of the URL classifier, the second parallel component processing leg having a second filter length that is greater than the first filter length, a second convolutional layer, and a second max pooling layer following the second convolutional layer;

generating a word-level output from the word-level path using a first result from the first parallel component processing leg and a second result from the second parallel component processing leg;

generating a decision input vector using the word-level output;

generating a decision statistic using the decision input vector;

determining the decision statistic indicates the URL is malicious; and

outputting a URL warning in response to the decision statistic indicating the URL is malicious.

2. The media of claim 1 , further comprising:

forming a contextual-character embedding from the URL;

inputting the contextual-character embedding into a character-level path of the URL classifier, wherein an input layer of the character-level path comprises a plurality of parallel convolutional layers; and

generating a character-level output from the character-level path.

3. The media of claim 2 , wherein each of the plurality of parallel convolutional layers in the character-level path has an input filter of a different amount of characters.

4. The media of claim 1 , wherein an input layer of the word-level path comprises a plurality of parallel convolutional layers.

5. The media of claim 4 , wherein each of the plurality of parallel convolutional layers in the word-level path has an input filter for words comprising a different amount of characters.

6. The media of claim 1 , wherein the first word is identified by identifying a string of characters in the URL that match a word in a URL specific vocabulary.

7. The media of claim 6 , wherein the URL specific vocabulary is generated by decomposing a corpus of URLs into n-grams and then adding n-grams that occur above a threshold number of times within the corpus to the URL specific vocabulary.

8. A method for displaying a class indication for unstructured text in a URL, the method comprising:

receiving a URL;

forming a contextual-word embedding from the URL by identifying a string of characters in the URL that match a word in a URL specific vocabulary;

processing the contextual-word embedding into a word-level path of a URL classifier, wherein the word-level path comprises a first text processing block and a second text processing block arranged in series, wherein the first text processing block includes a first set of parallel convolutional layers that include a convolutional layer followed by a max pooling layer, and a first concatenation layer to generate a first vector from an output of the first set of parallel convolutional layers, and wherein the second text processing block includes a second set of parallel convolutional layers that include a convolutional layer followed by a max pooling layer and a second concatenation layer to generate a second vector from an output of the second set of parallel convolutional layers;

generating a word-level output from the word-level path using the second matrix;

generating a decision input vector using the word-level output as an input;

generating a decision statistic using the decision input vector;

determining the decision statistic indicates a classification; and

outputting an indication of the classification.

9. The method of claim 8 , wherein the URL specific vocabulary is generated by decomposing a corpus of URLs into n-grams and then adding n-grams that occur above a threshold number of times within the corpus to the URL specific vocabulary.

10. The method of claim 8 , wherein an input layer of the word-level path comprises a plurality of parallel convolutional layers.

11. The method of claim 10 , wherein each of the plurality of parallel convolutional layers in the word-level path has an input filter for words comprising a different amount of characters.

12. The method of claim 8 , wherein, excluding training data, the URL is the only input processed to generate the decision statistic.

13. The method of claim 8 , wherein the method further comprises:

forming a contextual-character embedding from the URL;

inputting the contextual-character embedding into a character-level path of the URL classifier;

generating a character-level output from the character-level path; and

wherein the character-level output is also used to form the decision input vector.

14. The method of claim 13 , wherein an input layer of the character-level path comprises a plurality of parallel convolutional layers, and wherein each of the plurality of parallel convolutional layers in the character-level path has an input filter of a different amount of characters.

15. The method of claim 14 , wherein the contextual-word embedding represents a first word identified in the URL and a context of the first word in the URL.

16. A method for displaying a class indication for unstructured text, the method comprising:

receiving an unstructured text;

forming a first contextual-character embedding of a first amount of characters from the unstructured text;

forming a second contextual-character embedding of a second amount of characters from the unstructured text, wherein the first amount is less than the second amount;

processing the first contextual-character embedding into a first parallel component processing leg within a character-level path of a classifier, the first parallel component processing leg having a first filter length, a first convolutional layer, and a first max pooling layer following the first convolutional layer;

processing the second contextual-character embedding into a second parallel component processing leg within the character-level path of the classifier, the second parallel component processing leg having a second filter length, a second convolutional layer, and a second max pooling layer following the second convolutional layer;

generating a first character-level output from the character-level path using a first result from the first parallel component processing leg and a second result from the second parallel component processing leg;

generating a decision input vector using the first character-level output as an input;

generating a decision statistic using the decision input vector;

determining the decision statistic indicates the unstructured text conforms to a first class; and

outputting an indication of the first class.

17. The method of claim 16 , wherein an input layer of the character-level path comprises a plurality of parallel convolutional layers.

18. The method of claim 16 , further comprising:

forming a contextual-word embedding from the unstructured text;

inputting the contextual-word embedding into a word-level path of the classifier;

generating a word-level output from the word-level path; and

wherein the word-level output is also used to form the decision input vector.

19. The method of claim 18 , wherein an input layer of the word-level path comprises a plurality of parallel convolutional layers, and wherein each of the plurality of parallel convolutional layers in the word-level path has an input filter for words comprising a different amount of characters.

20. The method of claim 16 , wherein, excluding training data, the unstructured text is the only input processed to generate the decision statistic.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2023
From: GURURAJAN, ARUNKUMAR; STOKES, JACK WILSON, III; TAJADDODINFAR, FARID
To: MICROSOFT TECHNOLOGY LICENSING, LLC,
Reel/Frame 064581/0396 →
Continuity (3)
Continuation 16917626 · Jun 30, 2020
Provisional Application 63006482 · Apr 7, 2020
Related Publication 20230385409A1 · Nov 30, 2023
References Cited (48)
US 11093816B2 · Lu · 2021 [cited by examiner]
US 20120158626A1 · Zhu et al. · 2012 [cited by applicant]
US 20140033307A1 · Schmidtler · 2014 [cited by applicant]
US 20150032449A1 · Sainath · 2015 [cited by examiner]
US 20150254566A1 · Chandramouli et al. · 2015 [cited by applicant]
US 20160344770A1 · Verma et al. · 2016 [cited by applicant]
US 20170046616A1 · Socher · 2017 [cited by examiner]
US 20170359368A1 · Hodgman et al. · 2017 [cited by applicant]
US 20170372071A1 · Saxe · 2017 [cited by examiner]
US 20180075338A1 · Gokmen · 2018 [cited by examiner]
US 20180077120A1 · Baughman · 2018 [cited by examiner]
US 20180097822A1 · Huang · 2018 [cited by examiner]
US 20180268023A1 · Korpusik · 2018 [cited by examiner]
US 20180349477A1 · Jaech · 2018 [cited by examiner]
US 20190171934A1 · Sites · 2019 [cited by applicant]
US 20190278909A1 · Saxe · 2019 [cited by applicant]
US 20190349399A1 · Liu et al. · 2019 [cited by applicant]
US 20200067861A1 · Leddy et al. · 2020 [cited by applicant]
US 20200314122A1 · Jones et al. · 2020 [cited by applicant]
US 20200364338A1 · Ducau et al. · 2020 [cited by applicant]
US 20200366712A1 · Onut et al. · 2020 [cited by applicant]
US 20210165960A1 · Eisenschlos · 2021 [cited by applicant]
US 20210183484A1 · Shaib · 2021 [cited by examiner]
US 20210203692A1 · Nunes et al. · 2021 [cited by applicant]
US 20210218754A1 · Zou et al. · 2021 [cited by applicant]
US 20210234892A1 · Narayanaswamy · 2021 [cited by applicant]
US 20210390127A1 · Fox · 2021 [cited by examiner]
US 20220004642A1 · Pujar et al. · 2022 [cited by applicant]
US 20220046057A1 · Kutt · 2022 [cited by examiner]
US 20220121984A1 · Gupta et al. · 2022 [cited by applicant]
US 20220129630A1 · Costa et al. · 2022 [cited by applicant]
US 20220171943A1 · Keskar · 2022 [cited by applicant]
US 20220277141A1 · Nijkamp et al. · 2022 [cited by applicant]
US 20240171610A1 · Jones · 2024 [cited by examiner]
EP 3716574A1 · 2020 [cited by applicant]
Hung et al.; URLNet: Learning a URL Representation with Deep Learning for Malicious URL Detection; 2018; Retrieved from the Internet Https://arxiv.org/abs/1802.03162; pp. 1-13, as printed. (Year: 2018). [cited by examiner]
Tajaddodianfar et al.; Texception: a Character/Word-level Deep Learning Model for Phishing URL detection; 2020; retrieved from the Internet https://ieeexplore.ieee.org/abstract/document/9053670; pp. 1-5, as printed. (Ye… [cited by examiner]
Hendler et al.; AMSI-Based Detection of Malicious PowerShell Code Using Contextual Embeddings; 2019; retrieved from the Internet: https://arxiv.org/abs/1905.09538; pp. 1-17. (Year: 2019). [cited by examiner]
Huang et al.,; Phishing URL Detection via CNN and Attention-Based Hierarchical RNN; 2019; Retrieved from the Internet https://ieeexplore.ieee.org/abstract/document/8887407; pp. 1-8 as printed. (Year: 2019). [cited by examiner]
Huang et al.; Phishing URL Detection Via Capsule-Based Neural Network; 2019; retrieved from the Internet https://ieeexplore.ieee.org/abstract/document/8925000; pp. 1-6 as printed. (Year: 2019). [cited by examiner]
Li et al.; ReST-Net: Diverse Activation Modules and Parallel Subnets-Based CNN for Spatial Image Steganalysis; 2018; retrieved from the Internet https://ieeexplore.ieee.org/abstract/document/8322175; pp. 1-5, as printed… [cited by examiner]
Szegedy et al.; Going Deeper with Convolutions; 2015; retrieved from the Internet https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf; pp. 1-9, as printed. (Ye… [cited by examiner]
Lee, et al., “CATBERT: Context-Aware Tiny BERT for Detecting Social Engineering Emails,” In Repository of arXiv:2010.03484v1 Oct. 8, 2020 , 11 Pages. [cited by applicant]
Notice of Allowance mailed on Feb. 7, 2024, in U.S. Appl. No. 17/246,352, 22 pages. [cited by applicant]
“Non Final Office Action Issued in U.S. Appl. No. 17/246,352”, Mailed Date: Oct. 5, 2023, 25 Pages. [cited by applicant]
Communication 71(3) Received for European Application No. 21723471.5, mailed on Jul. 4, 2024, 8 pages. [cited by applicant]
Decision to grant a European patent pursuant to Article 97(1) Received for European Application No. 21723471.5, mailed on Oct. 17, 2024, 02 pages. [cited by applicant]
Non-Final Office Action mailed on Feb. 13, 2025, in U.S. Appl. No. 18/660,104, 34 pages. [cited by applicant]