Make it easier to write compound words
Some languages, for example Swedish, have a lot of compound words.
Perhaps this could be done by long-pressing space before entering the next word to tell SwiftKey I want the next word to be joined with previous.
1 Enter first part and press space or select prediction
2 Long press space
3 Enter second part and press space or selection prediction
4 SwiftKey removes space between part one and two
Not sure how well this would work in practice though and it would be a very hidden feature. A nice side effect would be that this could also be used to make it easier to enter e-mail addresses.
Swiftkey is fantastic and works great when typing in English. But is not at all that good with agglutinative languages which use case endings instead of prepositions. Thus, SwiftKey needs different logic to improve its handling of compound words and endings. This is particularly important with Finnish, Estonian and Hungarian languages.
This is actually true for all Uralic (Finno-Ugric) languages: Hungarian, finnish, estonian, mari, udmurt, sami, ingrian etc, as well as all turkic languages, and also for the most part, for germanic languages too. So it is a significant amount of people, whose languages makes use of suffixes and compound words.
Typing in English is fast and comfortable, but typing in Finnish kinda works at times, but it is lousy to deal with the case- and other endings. For instance, if I want to type "ajanvaraukseltakaan" (meaning: "even from the appointment"), typing it becomes very difficult.
When I try to swipe it, it starts suggesting "ajan", then "ajanvaraus", then "ajanvarauksella" - as if they all were different words. But actually they are not. The root word is "ajan" (time) + "varaus" (booking), making a compound word "ajanvaraus". Once completed, this will have to get the correct case ending for elative case "-lta" (meaning: from the), plus the enclictic particle "-kaan" (even).
Now, the SwiftKey has no clue at all about finnish cases and other agglutinative language features. It deals with all endings and compound words as if they were different dictionary words, and adds all of them separately to the dictionary, which in end becomes massive. And it does not help at all, when one has to type a long compound word with complex endings, and SwiftKey keeps suggesting something completely different - without realizing, that I am typing a compound word, that should be split into segments, and where I want to add case endings in the end.
Some recent examples:
"päivärinnankadullako" (päivä+rinnan+katu + -lla + -ko)
"suunnitelmissani" (suunnitelma +i +ni)
"hapanmaitotuotteitako" (hapan+maito+tuote + -ita + -ko)
"kauranäkkileivällehän" (kaura+näkki+leipä + -lle + -hän)
My suggestion is, that for these languages, SwiftKey should have compound word recognition: It should detect that the person has completed a word, and continues typing without hitting the space, and is likely to form a compound word. Instead of not suggesting anything and getting blank as currently it does (and forces the user to type each letter of the very long compound word), it should detect the new word and suggest the right completion.
In these strongly compounding languages, the grammar rules determine how compound words are formed. In finnish, there is indefinite number of compound words, and practically every term becomes a compound word, and the compound words are formed from normal dictionary words. Thus: "control valve" -> "säätöventtiili" (säätö+venttiili); "electricity consumption meter" -> "sähkökulutusmittari" (sähkö+kulutus+mittari). Plus, the case endings are added in the end.
"Agglutinative languages tend to create very long words with derivational morphemes. Compounds may or may not require the use of derivational morphemes also. The longest compounds in the world may be found in the Finnic and Germanic languages. [...] German examples include Farbfernsehgerät (color television set), Funkfernbedienung (radio remote control), and the jocular word Donaudampfschifffahrtsgesellschaftskapitänsmütze (Danube steamboat shipping company Captain's hat).
In Finnish there is no theoretical limit to the length of compound words, but in practice words consisting of more than three components are rare. Even those can look mysterious to non-Finnish, take hätäuloskäytävä (emergency exit) as an example."
Being a Swedish speaker I'm very happy that you support Swedish, but you seem to lack proper understanding of how Swedish works, regarding composition of new words.
In essence you can construct just about any word by joining two existing ones. For example: "bild" = "picture"/"slide" and "spel" = "show". In English you would sage "slide show", but in Swedish you say "bildspel", not "bild spel". Swiftkey incorrectly suggests "bild spel".
There's even a special word for this kind of writing error, called "särskrivning" (not "sär skrivning"), in essence "writing apart". Many Swedes do this by mistake, but it can lead to severe misunderstandings. For example "brunhårig flicka" means "brown haired girl", but "brun hårig flicka" means "brown hairy girl". :-)
Do you think you can fix it?
I've seen several other suggestions here on this same subject, one mentions "telefonkiosk" as opposed to SwiftKey's suggestion "telefon kiosk". They often mention "compond words". One said to turn off auto space (which I think is already possible in current version, but I think it's nice to have this on if SwiftKey can handle compound words better).
I think the key here is that SwiftKey might need to be able to take two arbitrary words in its dictionary and suggest their composition WITHOUT SPACE as a new word. I don't know the grammar well enough to be able to say if there are rules regarding what kinds of words can be combined (noun + noun is common of course, but perhaps preposition + verb is impossible, and so forth). You should get some help in this area unless you already have staff who know this well...
In the Swedish language many words are written together. It would be really nice if there where some kind of swipe-gesture that removed the space between the last two written word.
This suggestion is now under review. Thanks for your input and watch this space for more updates.
swiftkey sucks for compounds!
Here a many good ideas, for me joining words after typing would be sufficient. I type e.g. 3 words with spaces, then auto-join key. If the compound word is already known, SwiftKey could do it automatically. Some options would help to fit the need of the most users. You could even could collect statistics about option usage and suggest the most used one. But please do something! Designs are for the less talented companies...
Under review since 2012. Who needs compound words? SwiftKey needs more designs!
So, nothing? It is very irritating to write finnish, swedish, german or dutch on swiftkey. English works fantastic, but due to lack of compound word support, SwiftKey sucks in languages where compound words are common.
I'm also very interested in a solution to this.
My suggestion would be to add a gesture or command that removes the space between previous two words. E.g. Write "food" and then write "mart" and then double press space (or some other command/gesture) will remove the space in between the words and produce the word "foodmart". And also of course then store the word foodmart in my personal dictionary.
Mustafa Veysi Nural commented
This would also be extremely helpful for Turkish too. Not because of the compound words but because of the exhaustive number of combinations of the same word due to suffixes.
I'm also very interested in a solution for this small but annoying detail!
How did you solve it Nina?
I don't have any problems with this anymore.
Rather 20 than 7 months since the response from SK. Seems like they forgot to update this issue.
Jörg Wagner commented
7 months later still no progress, so sad!
Martin Hellspong commented
My suggestion for this is to simply include a key/swipe gesture that joins the last two words! In the simplest case this would just remove the space between them, but could in theory use some more fancy algorithm.
If I were to write a three-part compound word, I'd type them as three separate words, and then press the join-key (or do the "join" gesture) twice. Or I could type the first two, join them and then the third and join that.
Just disabling "smart space" (as they did for Swedish a while back, I think) is obviously not enough. We should still be able to get predictions for every part of the compound word, meaning that when I want to type "induktionsladdare" (induction charger), I should be able to get predictions for both "induktions" and "laddare" since they are both in the dictionary. The disabling of smart space allows me to type the whole word manually and not have SwiftKey auto-split it, but with no predictions at all, which is very inconvenient.
For now, I do compound words by typing the individual words using prediction, and afterwards I go back and remove the spaces, to not look like a fool.
This is the only reason I still once in a while try to switch to Swype (but I always come back to SwiftKey in the end). They have a solution for this, by either long pressing space between words, or swiping from space to backspace between writing words. It might not be the best solution, but it is so much faster than manually having to remove all spaces after finishing typing.
Also voted for this. SwiftKey is un-useable for normal texts.
I entered e. g. "Donau" because I wanna write "Donaudampfschifffahrt". After "Donau " there will be a space. Now I remove that space and want to write the next part "dampf" - but instead of being able to write that part, the keyboard re-uses the already finished term "Donau" for finding next term. Why? This word is finished! The only reason to have a look on this is to see that there shall be a small letter.
Here are more tools:
Helsinki Finite-State Transducer Technology (HFST)
The Helsinki Finite-State Transducer software is intended for the implementation of morphological analysers and other tools which are based on weighted and unweighted finite-state transducer technology. This work is licensed under a GNU Lesser General Public License v3.0.
The feasibility of the HFST toolkit is demonstrated by a full-fledged open source implementation of a Finnish lexicon as well as a number of other languages of varying morphological complexity (OMor).
Finnish is not the only language, where this occurs. Uralic (Finno-Ugric) languages have approx. 25 million speakers: Hungarian (13 million) Finnish (5 million), other Baltic-Finnic languages: Estonian, Ingrian, Karelian and Veps (2 million), & Mari & Udmurt (1million). Additionallu altayic languages, bask, eskimo, japan, korean, mongolian, turkish, tibeto-burman languages all are agglutinative using suffixes and compounding.
There are so many millions of speakers of these languages, that this kind of morphological syntax should be developed for SwiftKey. One just has to develop the functionality, a lot of tools and word lists are there already.
For instance, an Open-Source grammar and spell checker & hyphenator Voikko was developed for Open Office. It is based on the morphological analysis by Malaga.
Interactive Suomi-Malaga Demo, a demonstration of morphological analysis with Sukija variant of Suomi-malaga. The results are largely the same when Voikko variant is used. http://kitt.ifi.uzh.ch/kitt/cgi-bin/clsmm/suomimalaga-query.pl
- Morphological Spell Checker for Meadow Mari (mhr), beta (2012-10-26)
- Morphological Spell Checker for Komi-Zyrian (kpv), beta (2012-10-24)
- Эрзянь келень сёрмадома лувонь витнема-петнема, бета (2012-10-23)
Bernhard Streit commented
This issue is VERY annoying when you write in German, as some compounds (like "tomatoe ketchup" -> "Tomatenketchup") are already included in the dictionary and some aren't (like "garage gate" -> "Garagentor").
Because when you type a compound that is not included in the dictionary, swiftkey completely deletes the word you just tried to enter, and then you have to swype the first part of the compound, release, press delete, and then type letter by letter the 2nd part of the compound.
How about this: Add a way to signal to the app that you want to append a different word without breaking the flow (e.g. swiping in the word "Tomaten", then from the "n" swype to the prediction bar, then back to "k" and swype the word "ketchup" to get "Tomatenketchup".
But that only works if you make sure all words that are appened the letter "n" in case they are used in a compound, are in the dictionary with "n" at the end...or you try to identify all letters that are used for joining words and always allow them as a last letter...
No workaround AFAIK and this issue takes too long. But I don't miss SwiftKey since I paid 99 cents for Swype.