Quote:
Originally Posted by Siljrath
excuse me while i rant and daydream.
maybe someone will take the idea and run with it.
|
Few thoughts from a cold, realistic, programmer's point of view.
Quote:
Originally Posted by Siljrath
isn't it time we got working on a command line language that could be calmly and casually used by voice command?
|
In my opinion, speaking voice commands and listening to responces is way too slow to be useful. It is possible to read written text at speed of 1500 characters per second (common reading speed is around 130 cps) and type at a speed of 270. Spoken speech is slower. At least for me. An example - if you call some company which uses automatic device for redirecting phone calls (which says "press 0 to contact department A, press 1 o hear more about our products, etc."), it will take forewer just to receive information about possible choices. With graphical/text output user just have to take a glimpse at the screen and then can locate useful menu choice quickly.
Quote:
Originally Posted by Siljrath
BUT COMMAND LINE IS DYING!
|
Where is the proof? If someone isn't using CLI, this doesn't mean that CLI is dying.
Quote:
Originally Posted by Siljrath
now though the niche of 'nix geeks who have been brought up on bash can do very well with command line, the majority of folks arn't likely to suddenly be motivated to learn it. and that is a problem for those of us who are learning or already ahead of the curve. do we want world of users stuck to something gooey? (gui)
|
In my opinion:
1) It is easier for a human to learn dozen (or several dozens, since after first five languages they all will look nearly same) computer languages that are best suitable for a certain tasks, than for a computer to understand human.
2) (This may sound rude). If the "majority" can't learn CLI, they'll have to stick with less-powerfull tools. If they "aren't motivated" to learn CLI/bash/programming, they simply don't need it, and will have to live without it. Everything has it's price, so if you need powerfull interaction interface, you'll have to learn it. The "gooey" software is already providing nice alternative for those who simply don't want or don't need to spend their time learning CLI, programming, etc. Not all people need it, anyway.
3) The beauty of the command line is in the fact that have a little in common with "plain english". Expressing regexps and perl one-liners in spoken english (as well, as writing scripts) will be trouble.
Quote:
Originally Posted by Siljrath
i dont see why this should be so hard... forget the voice reccognition for now.
|
Short explanation.
What you ask is to make interpreter of a "plain english" language. I.e. turn human language into computer language.
Human language's task is to represent an
endless number of possible objects(ideas,abstractions,etc) in that way that one human being will get a
brief idea what other one is talking about. A word in spoken language have a lot of meanings (it can have no meanings without other words), where one or more meanings will be dominant in current situation and context. And there are a lot of
models of world, that can be represented using one language.
In contrast, computer language's task is to represent
very limited number of possible types of objects that fits into single predefined model of the world. The purpose of such language is to make computer know that user wants to do one thing and not another, and exclude all errors (like typos) that will make sentence difficult to interpret. And any language sentence must be constructed in that way that it can be interpreted ONLY in one way, without possibility of another one - this is a requirement. So something that can't fit into known categories of objects/ideas can never be represented with that language, and cannot be understood (what is sweater from the computer's point of view?)
These differences arise from machine's inability to learn. During the life human learn about new objects, and make new models of world for different situations, environments. Because of this words sometimes change meanings, have different meanings in other areas, etc.
Machine only "knows" about numbers. Any object/word in the end will be represented by number which indicates it's type and what can be done about this object. New types of objects will have to be explicitly defined by someone, machine won't be able to learn them itself. And this means - as long as user won't use words outside of those set known for computer - everything will be fine. When machine will be uncertain, or won't recognise word in dictionary, it will become either stupid or annoying.
This means, that a human during conversation can build new categories and objects, learn new things, etc. So, if you'll meet someone who have never seen a cat during whole life, you can explain to that person briefly what a cat is it, so as a result person will connect one of the meanings of word "cat" with a complex representation of a cat, which will include a lot in it. You can't explain "what is cat" to a computer with standard language. You can make computer know, that "cat is an animal". That is - if computer "know" about group of objects named "animals" (if computer doesn't know about animals, cat will have to be object, no matter what you think about it). This won't be enough to recognise cat, also computer can come to a "brilliant" conclusion - if every cat is an animal, then every animal is a cat. If dog is also an animal, then animals are dogs too. Which also means that cats are dogs and dogs are cats. This is stupid from human's point of view, but it is logical for a machine operating on a predefined model/classification of real-world objects. To distinguish one object from another (as well as one distinguish meaning of the spoken word of another) machine must be able to quickly split objects into many categories, creating categories during the process. This is somewhat like databases, but it much more complex. And I currently know no way how a "normal computer" can do this. And because of this, computer will have trouble finding movie with a woman wearing red sweater.
So your example conversation will most likely turn into following:
Siljrath: "Computer"
Computer: (after waiting further input for several minutes)"No command given. I understand you as long as you are saying "computer". Clarify sentence or start a new one"
Siljrath: "just for a laugh.... show me all videos where there's a woman wearing a red sweater."
Computer: "I understand you as long as you want to laugh."
Siljrath: "show me all videos where there's a woman wearing a red sweater!"
Computer: "I understand you as long as you want me to show all videos. Could not understood "where there""
etc.
Tip: Try playing interactive fiction games, for example. Those system are sometimes looks like human speech, but they are very limited.
Quote:
Originally Posted by Siljrath
i'm just talking about getting a computer to reccognise plain english, and being able to talk back appropriately to anything you write...
|
This feature requires artifical intelligence, and ability to learn. That is - if you want' software to recognise "plain english" and not "really small subset of english words".
Quote:
Originally Posted by Siljrath
i mean the computer can offer suggestions at least as to what to write to get your comand to do as you ask.
|
Windows tries to work this way. This is awful and annoying. Machine must do what what user
said, the user is one that is supposed to think...
Quote:
Originally Posted by Siljrath
i hear there's great leaps n bounds been made in recent years on context searches.
|
I must say that what certain context sensetivie advertisment systems put on sometimes put on sites as advertising, often doesn't fit what the site is about.
Quote:
Originally Posted by Siljrath
Siljrath: "Computer"
Computer: "mhmm?"
Siljrath: "just for a laugh.... show me all videos where there's a woman wearing a red sweater."
Computer: "context search may take a few hours to complete. get a quantum computer. searching. more search results coming."
Siljrath: "oh, and find me that file i was working on a few days ago... the big purple image."
Computer: "here's your big purple image's last save, opened in GIMP."
|
From programmer's point of view:
Try to think like computer (The tip: computer cannot think. It can only calculate and perform actions using given algorithm). Build a syntaxic tree from this conversation, locate meaningfull directives, find out which command user was talking about. It is nearly impossible to interpret. And, for example, "image" can mean "picture" or "hard drive image". As for a "woman wearing red sweater", following problems arise:
1) Machine needs to interpret picture (by the way - you are talking about movie. This may be far more difficult). So, it needs to open image, interpret object in picture, recognise it, if there is a woman in picture or not, and check if she is wearing sweater and it is read. Now you should remember, that the only information you have is a 2D array of pixels... I suppose that software that will be able to perform that task without limitations will cost quite a lot.
2) user will have to build a keywoard database for every picture he stores on the computer. This is just boring, useless and will take too much time. User's time.
And in following part of conversation:
Quote:
Originally Posted by Siljrath
Siljrath: "and while you're still searching, could you copy my Sabayon partition to the empty parition on my external hd?"
Computer: "your external sata doesnt have a empty partition. there's enough space. should i make one?"
|
Computer is trying to think instead of user, predict their actions, etc. (IMHO) An attempt to predict user behaviour will result in something like Windows(r) behaviour ("you've tried to remove shortcut from desktop. This won't delete program it's pointing to! To delete program, to blah-blah-blah."). In practice this will make machine either awfully annoying (since it can't think) or stupid. In my opinion - trying to predict user's behaviour (what he would/will/meant to do) is most stupid, annoying and evil thing a program can do to a user.
Quote:
Originally Posted by Siljrath
lemme know what yas think. any constructive criticism. any suggestions, enhancements, augmentations, additions etc.
any tips on how to take the idea further and get it started.
|
1) (IMHO) This cannot be achevied (without limitations) using binary logic on a standart PC. Maybe machine that uses some other ideas can do it (neuro-computers), but I do not know about such system. For full functionality AI is required. Without full functionality this system can be useful only for disabled people, etc. And it will be extremely stupid, annoying, and won't be able to find a woman in a red sweater in the movie.
2) Useless for anyone who have good typing/reading skills, because it is too slow.
3) Cannot match CLI/programming language anyway, because CLI is better suitable (compact, etc) for expressing system commands, than plain english. And certain cli constructs (like regexps) can't be easily spoken.
4) This won't be cheap.