## 4 Proposed Fault-Prone Software Requirements Specification Detection Model
### Ambiguous Classification Model
#### 4.1.3 Data Labelling  
The next process involves data labeling, which aims to categorize the gathered requirements into six groups, namely lexical ambiguity, syntactic ambiguity, semantic ambiguity, syntax ambiguity, pragmatic ambiguity, and clean. To expedite this process and eliminate the need for human labeling, Python scripts were developed utilizing algorithms to identify and differentiate between the various types of ambiguities. The POS tagger was employed to assign grammatical information to each word in the sentence, while [PERSON] and [PERSON] [18] highlighted ambiguous words were used to identify each type of ambiguous requirement, as illustrated in Table 3. Furthermore, the passive voice formulas and POS equivalents, based on the research by [PERSON] and [PERSON] [6], were employed to determine ambiguous requirements. The lexical database WordNet was also utilized to facilitate ambiguity detection in software requirements. WordNet offers a comprehensive inventory of words and semantic relationships, enabling us to identify potential sources of ambiguity in requirement statements by analyzing constituent terms and associated synonyms and senses. By leveraging WordNet's extensive coverage of the English language lexicon, we developed a robust approach to automatically detect and classify different types of ambiguities in software requirements. This process resulted in 7061 extracted requirements, with 3041 labeled as ambiguous requirements and 4020 labeled as clean requirements, as presented in Table 4.  
\begin{table}
\begin{tabular}{p{142.3 pt} p{142.3 pt}} \hline \hline
**Ambiguity** & **Possible Ambiguity Indicators** \\ \hline Lexical & Lexical ambiguity indicators: Access, address, application, archive, array, bandwidth, binary, cache, compiler, compression, configuration, console, data, directory, disk, domain, driver, encryption, file, firewall, folder, gateway, interface, kernel, library, link, load, logic, macro, malware, memory, metadata, migration, monitor, object, optimization, packet, path, pixel, protocol, query, registry, resource, router, script, security, server, etc. \\ \hline Syntactic & Syntactic ambiguity indicators: And, or, but, so, yet, nor, for, if, although, because, since, unless, until, while, even though, then, as, whenever, wherever, whereas, as if, as long as, etc. \\ \hline Semantic & Semantic ambiguity indicators: All, every, many, several, any, some, few, a lot of, much, little, enough, most, none, halt, whole, both, either, neither each, more, less, plenty of, a number of, a great deal of, a bit of, a few, a majority of, etc. \\ \hline Syntax & Checks the absence of a full stop at the end of a condemamation, indicated by the “-”,/.” tag, or the use of passive voice for each software requirement. \\ \hline Pragmatic & Pragmatic ambiguity indicators: I, me, you, he, him, she, her, it, we, us, they, them, mine, yours, his, hers, its, ours, theirs, myself, yourself, himself, herself, itself, ourselves, yourselves, themselves, this, that, these, those, somebody, someone, something, etc. \\ \hline \hline \end{tabular}
\end{table}
Table 3: Possible Ambiguity Indicator.  
Figure 3: Data cleaning and pre-processing.