மாஸ்டர் திட்டத்தின் மாணவர்கள் பங்கேற்ற ஸ்பிரிங் ஹேக்கத்தான் தேவ்டேஸின் திட்டங்களைப் பற்றி நாங்கள் தொடர்ந்து பேசுகிறோம்.
இதில் சேர வாசகர்களை அழைக்க விரும்புகிறோம்
டெலிகிராம் டெஸ்க்டாப் வாய்ஸ் மெசேஜ் பார்சர்
யோசனையின் ஆசிரியர்
Khoroshev Artyom
கட்டளை அமைப்பு
Khoroshev Artem - திட்ட மேலாளர்/டெவலப்பர்/QA
Eliseev ஆண்டன் - வணிக ஆய்வாளர்/சந்தைப்படுத்தல் நிபுணர்
மரியா குக்லினா - UI வடிவமைப்பாளர்/டெவலப்பர்
Bakhvalov Pavel - UI வடிவமைப்பாளர்/டெவலப்பர்/QA
எங்கள் பார்வையில், டெலிகிராம் ஒரு நவீன மற்றும் வசதியான தூதுவர், மேலும் அதன் பிசி பதிப்பு பிரபலமானது மற்றும் திறந்த மூலமாகும், இது அதை மாற்றுவதை சாத்தியமாக்குகிறது. வாடிக்கையாளர் மிகவும் பணக்கார செயல்பாட்டை வழங்குகிறது. நிலையான உரைச் செய்திகளைத் தவிர, இதில் குரல் அழைப்புகள், வீடியோ செய்திகள் மற்றும் குரல் செய்திகள் உள்ளன. பிந்தையது சில சமயங்களில் அவர்களின் பெறுநருக்கு சிரமத்தைத் தருகிறது. கணினி அல்லது மடிக்கணினியில் இருக்கும்போது குரல் செய்தியைக் கேட்பது பெரும்பாலும் சாத்தியமில்லை. சுற்றுப்புறச் சத்தம், ஹெட்ஃபோன்கள் இல்லாமை அல்லது செய்தியின் உள்ளடக்கத்தை யாரும் கேட்கக் கூடாது. நீங்கள் ஸ்மார்ட்போனில் டெலிகிராமைப் பயன்படுத்தினால் இதுபோன்ற சிக்கல்கள் ஒருபோதும் எழாது, ஏனென்றால் மடிக்கணினி அல்லது பிசி போலல்லாமல் அதை உங்கள் காதுக்கு கொண்டு வரலாம். இந்த சிக்கலை தீர்க்க முயற்சித்தோம்.
டெலிகிராம் டெஸ்க்டாப் கிளையண்டிற்கு (இனிமேல் டெலிகிராம் டெஸ்க்டாப் என குறிப்பிடப்படுகிறது) பெறப்பட்ட குரல் செய்திகளை உரையாக மொழிபெயர்க்கும் திறனை சேர்ப்பதே DevDays இல் உள்ள எங்கள் திட்டத்தின் குறிக்கோளாகும்.
இந்த நேரத்தில் அனைத்து ஒப்புமைகளும் போட்கள் ஆகும், அதற்கு நீங்கள் ஆடியோ செய்தியை அனுப்பலாம் மற்றும் பதிலுக்கு உரையைப் பெறலாம். இதில் நாங்கள் மிகவும் மகிழ்ச்சியடையவில்லை: ஒரு செய்தியை போட்க்கு அனுப்புவது மிகவும் வசதியானது அல்ல; நாங்கள் சொந்த செயல்பாட்டைக் கொண்டிருக்க விரும்புகிறோம். கூடுதலாக, எந்தவொரு போட் என்பது பேச்சு அறிதல் API மற்றும் பயனருக்கு இடையில் ஒரு இடைத்தரகராகச் செயல்படும் மூன்றாம் தரப்பு ஆகும், மேலும் இது குறைந்தபட்சம் பாதுகாப்பற்றது.
முன்னர் குறிப்பிட்டபடி, டெலிகிராம்-டெஸ்க்டாப் இரண்டு குறிப்பிடத்தக்க நன்மைகளைக் கொண்டுள்ளது: செயல்பாட்டின் எளிமை மற்றும் வேகம். இது தற்செயல் நிகழ்வு அல்ல, ஏனெனில் இது முற்றிலும் C++ இல் எழுதப்பட்டுள்ளது. புதிய செயல்பாட்டை கிளையண்டிற்கு நேரடியாகச் சேர்க்க முடிவு செய்ததால், அதை C++ இல் உருவாக்க வேண்டும்.
எங்கள் அணியில் 4 பேர் இருந்தனர். ஆரம்பத்தில், இரண்டு பேர் பேச்சு அங்கீகாரத்திற்காக பொருத்தமான நூலகத்தைத் தேடிக்கொண்டிருந்தனர், ஒருவர் டெலிகிராம்-டெஸ்க்டாப்பின் மூலக் குறியீட்டைப் படித்துக்கொண்டிருந்தார், மற்றொருவர் உருவாக்கத் திட்டத்தைப் பயன்படுத்தினார்.
நோக்கம் கொண்ட செயல்பாட்டை செயல்படுத்துவது கடினம் அல்ல என்று தோன்றியது, ஆனால், எப்போதும் நடப்பது போல, சிரமங்கள் எழுந்தன.
சிக்கலுக்கான தீர்வு இரண்டு சுயாதீன துணைப் பணிகளைக் கொண்டிருந்தது: பொருத்தமான பேச்சு அறிதல் கருவியைத் தேர்ந்தெடுத்து புதிய செயல்பாட்டிற்கான UI ஐ செயல்படுத்துதல்.
குரல் அறிதலுக்கான நூலகத்தைத் தேர்ந்தெடுக்கும்போது, அனைத்து ஆஃப்லைன் API களையும் உடனடியாகக் கைவிட வேண்டியிருந்தது, ஏனெனில் மொழி மாதிரிகள் அதிக இடத்தை எடுத்துக்கொள்கின்றன. ஆனால் நாம் ஒரே ஒரு மொழியைப் பற்றி மட்டுமே பேசுகிறோம். நாம் ஆன்லைன் API ஐப் பயன்படுத்த வேண்டும் என்பது தெளிவாகியது. கூகிள், யாண்டெக்ஸ் மற்றும் மைக்ரோசாப்ட் போன்ற ஜாம்பவான்களின் பேச்சு அங்கீகார சேவைகள் அனைத்தும் இலவசம் அல்ல, மேலும் சோதனைக் காலத்தில் நாங்கள் திருப்தியடைய வேண்டும் என்பது பின்னர் தெரியவந்தது. இதன் விளைவாக, கூகுள் ஸ்பீச்-டு-டெக்ஸ்ட் தேர்வு செய்யப்பட்டது, ஏனெனில் இது சேவையைப் பயன்படுத்துவதற்கான டோக்கனைப் பெற உங்களை அனுமதிக்கிறது, இது ஒரு வருடம் முழுவதும் நீடிக்கும்.
நாங்கள் சந்தித்த இரண்டாவது சிக்கல் C++ இன் சில குறைபாடுகளுடன் தொடர்புடையது - மையப்படுத்தப்பட்ட களஞ்சியம் இல்லாத பல்வேறு நூலகங்களின் உயிரியல் பூங்கா. டெலிகிராம் டெஸ்க்டாப் பல பதிப்பு-குறிப்பிட்ட நூலகங்களைப் பொறுத்தது. அதிகாரப்பூர்வ களஞ்சியத்தில் உள்ளது
டெலிகிராம் டெஸ்க்டாப் அசெம்பிள் செய்ய நீண்ட நேரம் எடுக்கும்: இன்டெல் கோர் i5-7200U கொண்ட மடிக்கணினியில், அனைத்து சார்புகளுடன் முழுமையான அசெம்பிளி (கொடி -j 4) சுமார் மூன்று மணி நேரம் ஆகும். இவற்றில், கிளையண்டை இணைப்பதன் மூலம் சுமார் 30 நிமிடங்கள் எடுக்கப்படுகின்றன (பிழைத்திருத்த உள்ளமைவில், இணைக்க சுமார் 10 நிமிடங்கள் ஆகும் என்பது பின்னர் தெரியவந்தது), ஆனால் மாற்றங்களைச் செய்த பிறகு ஒவ்வொரு முறையும் இணைக்கும் நிலை மீண்டும் செய்யப்பட வேண்டும்.
சிக்கல்கள் இருந்தபோதிலும், நாங்கள் கருத்தரிக்கப்பட்ட யோசனையை செயல்படுத்த முடிந்தது, அத்துடன் புதுப்பித்தலும்
எங்கள் கருத்துப்படி, இது பல பயனர்களுக்கு வசதியாக இருக்கும் செயல்பாட்டின் கருத்துக்கான ஒரு நல்ல சான்றாக மாறியது. டெலிகிராம் டெஸ்க்டாப்பின் எதிர்கால வெளியீடுகளில் இதைப் பார்க்கலாம் என்று நம்புகிறோம்.
IntelliJ IDEA இல் மேம்படுத்தப்பட்ட இயற்கை மொழி ஆதரவு
யோசனையின் ஆசிரியர்
டான்கோவ் விளாடிஸ்லாவ்
கட்டளை அமைப்பு
டான்கோவ் விளாடிஸ்லாவ் (அணித் தலைவர், LanguageTool மற்றும் IntelliJ IDEA உடன் பணிபுரிகிறார்)
நிகிதா சோகோலோவ் (LanguageTool உடன் பணிபுரிதல் மற்றும் UI ஐ உருவாக்குதல்)
குவோரோவ் அலெக்சாண்டர் (LanguageTool உடன் பணிபுரிந்து செயல்திறனை மேம்படுத்துதல்)
சடோவ்னிகோவ் அலெக்சாண்டர் (மார்க்அப் மொழிகள் மற்றும் குறியீட்டை பாகுபடுத்துவதற்கான ஆதரவு)
இலக்கண, எழுத்துப்பிழை மற்றும் ஸ்டைலிஸ்டிக் துல்லியத்திற்காக (ஆங்கிலத்தில் இதை சரிபார்த்தல் என்று அழைக்கப்படுகிறது) பல்வேறு உரைகளை (கருத்துகள் மற்றும் ஆவணங்கள், குறியீட்டில் உள்ள நேரடி வரிகள், மார்க் டவுன் அல்லது எக்ஸ்எம்எல் மார்க்அப்பில் வடிவமைக்கப்பட்ட உரை) சரிபார்க்கும் IntelliJ IDEAக்கான செருகுநிரலை நாங்கள் உருவாக்கியுள்ளோம்.
IDE க்குள் ஒரு வகையான இலக்கணத்தை உருவாக்க, நிலையான எழுத்துப்பிழை சரிபார்ப்பு IntelliJ IDEA ஐ இலக்கண அளவிற்கு விரிவுபடுத்துவதே திட்டத்தின் யோசனை.
என்ன நடந்தது என்று பார்க்கலாம்
சரி, சொருகியின் திறன்கள் மற்றும் அதன் உருவாக்கத்தின் போது எழுந்த சிரமங்களைப் பற்றி கீழே விரிவாகப் பேசுவோம்.
உள்நோக்கம்
இயற்கையான மொழிகளில் உரை எழுதுவதற்காக வடிவமைக்கப்பட்ட பல தயாரிப்புகள் உள்ளன, ஆனால் ஆவணங்கள் மற்றும் குறியீடு கருத்துகள் பெரும்பாலும் வளர்ச்சி சூழல்களில் எழுதப்படுகின்றன. அதே நேரத்தில், குறியீட்டில் உள்ள பிழைகளைக் கண்டறிவதில் IDE கள் சிறந்த வேலையைச் செய்கின்றன, ஆனால் அவை இயற்கை மொழிகளில் உள்ள உரைகளுக்கு மிகவும் பொருத்தமானவை அல்ல. வளர்ச்சி சூழல் சுட்டிக்காட்டாமல் இலக்கணம், நிறுத்தற்குறிகள் அல்லது பாணியில் தவறுகளைச் செய்வதை இது மிகவும் எளிதாக்குகிறது. பயனர் இடைமுகத்தை எழுதுவதில் தவறு செய்வது மிகவும் முக்கியமானது, ஏனெனில் இது குறியீட்டின் புரிதலை மட்டுமல்ல, வளர்ந்த பயன்பாட்டின் பயனர்களையும் பாதிக்கும்.
IntelliJ IDEA மற்றும் IntelliJ இயங்குதளத்தை அடிப்படையாகக் கொண்ட IDEகள் மிகவும் பிரபலமான மற்றும் வளர்ந்த வளர்ச்சி சூழல்களில் ஒன்றாகும். IntelliJ இயங்குதளத்தில் ஏற்கனவே உள்ளமைக்கப்பட்ட எழுத்துப்பிழை சரிபார்ப்பு உள்ளது, ஆனால் இது எளிமையான இலக்கணப் பிழைகளைக் கூட அகற்றாது. பிரபலமான இயற்கை மொழி பகுப்பாய்வு அமைப்புகளில் ஒன்றை IntelliJ IDEA இல் ஒருங்கிணைக்க முடிவு செய்தோம்.
Реализация
எங்கள் சொந்த உரை சரிபார்ப்பு அமைப்பை உருவாக்கும் பணியை நாங்கள் அமைக்கவில்லை, எனவே ஏற்கனவே உள்ள தீர்வைப் பயன்படுத்தினோம். மிகவும் பொருத்தமான விருப்பம் மாறியது
செருகுநிரல் குறியீடு உள்ளது
சிரமங்களை
ஒவ்வொரு முறையும் ஆய்வுக்காக அனைத்து உரைகளையும் LanguageTool க்கு வழங்கினால், IDEA இடைமுகம் அதிகமாகவோ அல்லது குறைவாகவோ தீவிரமான உரையில் உறைந்துவிடும், ஏனெனில் ஆய்வு UI ஓட்டத்தைத் தடுக்கிறது. `ProgressManager.checkCancelled` சரிபார்ப்பு மூலம் சிக்கல் தீர்க்கப்பட்டது - IDEA ஆய்வை நிறுத்த வேண்டிய நேரம் இது என்று நம்பினால், இந்தச் செயல்பாடு விதிவிலக்கு அளிக்கும்.
இது முடக்கங்களை முற்றிலுமாக நீக்கியது, ஆனால் அதைப் பயன்படுத்த இயலாது: உரை செயலாக்கத்திற்கு மிக நீண்ட நேரம் எடுக்கும். மேலும், எங்கள் விஷயத்தில், பெரும்பாலும் உரையின் மிகச் சிறிய பகுதி மாறுகிறது, மேலும் முடிவுகளை எப்படியாவது தேக்ககப்படுத்த விரும்புகிறோம். அதைத்தான் நாங்கள் செய்தோம். ஒவ்வொரு முறையும் எல்லாவற்றையும் சரிபார்க்காமல் இருக்க, நாங்கள் உறுதியாக உரையை துண்டுகளாகப் பிரித்து, மாறியவற்றை மட்டும் சரிபார்த்தோம். உரைகள் பெரியதாக இருக்கலாம் மற்றும் தற்காலிக சேமிப்பை ஏற்ற விரும்பவில்லை என்பதால், நாங்கள் உரைகளை அல்ல, ஆனால் அவற்றின் ஹாஷ்களை சேமித்தோம். இது பெரிய கோப்புகளில் கூட சொருகி சீராக இயங்க அனுமதித்தது.
LanguageTool 25 க்கும் மேற்பட்ட மொழிகளை ஆதரிக்கிறது, ஆனால் எந்த ஒரு பயனருக்கும் அவை அனைத்தும் தேவைப்பட வாய்ப்பில்லை. கோரிக்கையின் பேரில் ஒரு குறிப்பிட்ட மொழிக்கான நூலகங்களைப் பதிவிறக்குவதற்கான வாய்ப்பை வழங்க விரும்பினேன் (நீங்கள் அதை UI இல் டிக் செய்தால்). நாங்கள் இதைச் செயல்படுத்தினோம், ஆனால் அது மிகவும் சிக்கலானதாகவும் நம்பமுடியாததாகவும் மாறியது. குறிப்பாக, தனி கிளாஸ்லோடரைப் பயன்படுத்தி புதிய மொழிகளின் தொகுப்புடன் LanguageTool ஐ ஏற்ற வேண்டும், பின்னர் அதை கவனமாக துவக்க வேண்டும். அதே நேரத்தில், அனைத்து நூலகங்களும் ஒரு பயனர் .m2 களஞ்சியத்தில் இருந்தன, மேலும் ஒவ்வொரு தொடக்கத்திலும் அவற்றின் ஒருமைப்பாட்டைச் சரிபார்க்க வேண்டும். முடிவில், பயனர்களுக்கு செருகுநிரலின் அளவுகளில் சிக்கல்கள் இருந்தால், நாங்கள் மிகவும் பிரபலமான பல மொழிகளுக்கு தனி செருகுநிரலை வழங்குவோம் என்று முடிவு செய்தோம்.
ஹேக்கத்தானுக்குப் பிறகு
ஹேக்கத்தான் முடிந்தது, ஆனால் சொருகி வேலை ஒரு குறுகிய குழுவுடன் தொடர்ந்தது. நான் சரங்கள், கருத்துகள் மற்றும் மாறி மற்றும் வர்க்கப் பெயர்கள் போன்ற மொழி கட்டமைப்புகளை ஆதரிக்க விரும்பினேன். தற்போது இது Java, Kotlin மற்றும் Python ஆகியவற்றிற்கு மட்டுமே ஆதரிக்கப்படுகிறது, ஆனால் இந்த பட்டியல் வளரும் என நம்புகிறோம். நாங்கள் நிறைய சிறிய பிழைகளை சரிசெய்துள்ளோம், மேலும் ஐடியாவின் உள்ளமைக்கப்பட்ட எழுத்துப்பிழை சரிபார்ப்புடன் மிகவும் இணக்கமாகிவிட்டோம். கூடுதலாக, எக்ஸ்எம்எல் ஆதரவு மற்றும் எழுத்துப்பிழை சரிபார்ப்பு ஆகியவை தோன்றியுள்ளன. இதையெல்லாம் நாம் சமீபத்தில் வெளியிட்ட இரண்டாவது பதிப்பில் காணலாம்.
அடுத்து என்ன?
அத்தகைய சொருகி டெவலப்பர்களுக்கு மட்டுமல்ல, தொழில்நுட்ப எழுத்தாளர்களுக்கும் பயனுள்ளதாக இருக்கும் (பெரும்பாலும் வேலை செய்யும், எடுத்துக்காட்டாக, ஒரு IDE இல் XML உடன்). ஒவ்வொரு நாளும் அவர்கள் சாத்தியமான பிழைகள் பற்றி ஆசிரியர் குறிப்புகள் வடிவில் உதவியாளர் இல்லாமல், இயல்பான மொழியில் வேலை செய்ய வேண்டும். எங்கள் செருகுநிரல் அத்தகைய குறிப்புகளை வழங்குகிறது மற்றும் அதிக அளவு துல்லியத்துடன் செய்கிறது.
புதிய மொழிகளைச் சேர்ப்பதன் மூலமும், உரைச் சரிபார்ப்பை ஒழுங்கமைப்பதற்கான பொதுவான அணுகுமுறையை ஆராய்வதன் மூலமும் செருகுநிரலை உருவாக்க நாங்கள் திட்டமிட்டுள்ளோம். எங்களின் உடனடித் திட்டங்களில் ஸ்டைலிஸ்டிக் சுயவிவரங்களைச் செயல்படுத்துதல் (உரைக்கான நடை வழிகாட்டியை வரையறுக்கும் விதிகளின் தொகுப்பு, எடுத்துக்காட்டாக, “எ.கா. எழுத வேண்டாம், ஆனால் முழு வடிவத்தையும் எழுதுங்கள்”), அகராதியை விரிவுபடுத்துதல் மற்றும் பயனர் இடைமுகத்தை மேம்படுத்துதல் (குறிப்பாக, ஒரு வார்த்தையைப் புறக்கணிக்க மட்டுமல்லாமல், அதை அகராதியில் சேர்க்கும் வாய்ப்பை பயனருக்கு வழங்க விரும்புகிறோம், இது பேச்சின் பகுதியைக் குறிக்கிறது).
ஆதாரம்: www.habr.com