<prompt> Tengeneza programu ya Java ambayo huchanganua hati fulani ya maandishi na kutoa takwimu za mzunguko wa maneno. Hifadhi matokeo katika mkusanyiko wa MongoDB na utoe API RESTful ili kuuliza takwimu kwa neno au maneno ya juu ya N ya mara kwa mara. Unganisha uthibitishaji na uidhinishaji kwa kutumia tokeni za JWT.  <response>: Ili kutengeneza programu hii ya Java, tutatumia teknolojia zifuatazo:1. Spring Boot: Kuunda API RESTful na kudhibiti utegemezi.2. Maven: Kama zana ya ujenzi kwa mradi wetu.3. MongoDB: Kwa kuhifadhi takwimu za mzunguko wa maneno.4. JWT: Kwa uthibitishaji na uidhinishaji.Hapa kuna mwongozo wa hatua kwa hatua wa kuunda programu:Hatua ya 1: Sanidi mradiUnda mradi mpya wa Spring Boot kwa kutumia au IDE yako uipendayo na tegemezi zifuatazo:- Mtandao- Usalama- MongoDB- Lombok hiariHatua ya 2: Sanidi MongoDBOngeza sifa zifuatazo katika faili ya application.properties:spring.data.mongodb.urimongodb:localhost:27017word_statistics_dbBadilisha URI na maelezo yako ya mfano ya MongoDB ikiwa inahitajika.Hatua ya 3: Unda muundo wa WordFrequencyUnda darasa jipya linaloitwa WordFrequency.java: javakuagiza lombok.Data;agiza org.springframework.data.annotation.Id;kuagiza org.springframework.data.mongodb.core.mapping.Document;TakwimuDocumentmkusanyiko word_frequenciesdarasa la umma WordFrequency kitambulisho kitambulisho cha Kamba ya kibinafsi; neno la kamba ya kibinafsi; masafa ya int ya kibinafsi;Hatua ya 4: Unda Hifadhi ya MtumiajiUnda kiolesura kipya kiitwacho WordFrequencyRepository.java: javaagiza org.springframework.data.mongodb.repository.MongoRepository;kiolesura cha umma WordFrequencyRepository inapanua MongoRepository WordFrequency findByWordNeno la kamba;Hatua ya 5: Tekeleza huduma ya uchanganuzi wa maandishiUnda darasa jipya linaloitwa TextAnalysisService.java: javaagiza java.util.HashMap;agiza java.util.Map;agiza java.util.regex.Matcher;agiza java.util.regex.Pattern;Hudumadarasa la umma TextAnalysisService Ina waya otomatiki NenoFrequencyRepository ya faragha ya nenoFrequencyRepository; uchanganuzi utupu wa ummaTextString text Ramani wordFrequencyMap new HashMap; Muundo wa muundo Pattern.compilew; Kilinganishi pattern.matchertext.toLowerCase; wakati matcher.find Neno la kamba matcher.group; wordFrequencyMap.putneno, wordFrequencyMap.getOrDefaultneno, 0 1; kwa Map.Entry ingizo : wordFrequencyMap.entrySet WordFrequency wordFrequency wordFrequencyRepository.findByWordentry.getKey; ikiwa wordFrequency null wordFrequency new WordFrequency; wordFrequency.setWordentry.getKey; wordFrequency.setFrequencywordFrequency.getFrequency entry.getValue; wordFrequencyRepository.savewordFrequency; Hatua ya 6: Tekeleza uthibitishaji na uidhinishaji wa JWTFuata mafunzo haya ili kutekeleza uthibitishaji na uidhinishaji wa JWT katika programu yako ya Spring Boot: ya 7: Unda sehemu za mwisho za API zenye RESTfulUnda darasa jipya linaloitwa TextAnalysisController.java: javaimport org.springframework.beans.factory.annotation.Autowired;agiza org.springframework.security.access.prepost.PreAuthorize.import org.springframework.web.bind.annotation.;RestControllerRequestMappingapidarasa la umma TextAnalysisController Ina waya otomatiki Uchambuzi wa maandishi ya kibinafsiHuduma ya Uchambuzi wa maandishi; PostMappinganalyze-text PreAuthorizehasRoleUSER uchanganuzi wa utupu wa ummaNakalaRequestBody String text textAnalysisService.chambuaNakalamaandishi; GetMappingword-frequencyword PreAuthorizehasRoleUSER Public WordFrequency getWordFrequencyPathVariable Kamba neno rudisha nenoFrequencyRepository.findByWordneno; GetMappingtop-wordsn PreAuthorizehasRoleUSER Public List getTopWordsPathVariable int n rudisha nenoFrequencyRepository.findAllPanga.kwaSort.Direction.DESC, frequency.mkondo.kikomon.kusanyaCollectors.toList; Sasa una programu ya Java inayochanganua hati za maandishi na kutoa takwimu za mzunguko wa maneno. Matokeo huhifadhiwa katika mkusanyiko wa MongoDB, na API ya RESTful inaruhusu kuuliza takwimu kwa neno au maneno ya juu ya N mara kwa mara. Tokeni za JWT hutumiwa kwa uthibitishaji na uidhinishaji. 