Natural Language CLIs?
snuf23 asks: "Altavista has a report on the future of Windows as presented by Bill Gates at Microsoft Professional Developers Conference. Curiously, one of the touted features is called "type in-line." Essentially, it's a text based interface to the computer which uses a natural language interface. Having worked at a translation software company for three years, I am familiar with the complications of parsing meaning between human languages. It seems that in computer to human you would have somewhat less complexity, at least in terms of general use. Have any natural language interface CLIs been built? Voice recognition software comes to mind ("Open the file, HAL") but what attempts have there been to replace shell interfaces with natural language interpreters?" While I'm all for making computers easier to use, would typing "move all files beginning with the letter a to the directory called 'foo'" be any improvement over "mv a* foo" (or "move a* foo" for that matter)?
Go read the article. It's good. It's about human-language CLIs and readoing the GUI.
Well, not having to punch the darn buttons in the handset while trying to keep listening *IS* an improvement.
I fairly recently checked on an airplane arrival time with an all-voice system (American Airlines, I think -- I liked it well enough to give them this plug), and I think that will be the biggest improvement most of us will see for a while from voice input.
Also, I'd much prefer talking to a computer with a chance of finding out what I want, than staying on hold listening to my non-choice of music and I-love-my-resonant-voice announcements.
But the key is appropriate technology for each application. Tight unambiguous syntax is efficient. How do you solve one of those "if I were as old as you will be when Alice is twice as old as she is now, and I am three times as old as you, how long will it be until ... blah blah" problems? Of course it helps if you are familiar with elementary algebra. Not all people (shame to the educational system) are.
If you want to make all the files in a particular directory (sorry, "folder") have lower case names, without changing the names otherwise, how do you do that? Try it with Windows Explorer. Everything they thought of is easy, but stuff they didn't think of is a pain.
A quick and dirty perl script makes it easy. That's the virtue of direct access to composable primitives, which GUIs tend to bar you from. The thing is, composition of primitives is best expressed in a language of symbols suitable to the task. That's why directly typed input to an interpreter/CLI/shell will always have a place.
Imagine playing a piano by voice control at the key level. It's just as idiotic as voice control over computer primitives. But "play it again, Sam" would be ok. It's a matter of appropriate level.
Foreign languages aside, maybe this sort of thing would enforce better use of proper grammar and correct spelling among some portions of the population. Especially where children are concerned this could be a good thing. If you have to parse English syntax/grammar then you have to create rules that typists must conform to. Maybe the user's need to get things done will force them to conform to the rules, and maybe that will carry over into everyday writing and speech. ?
I've been using computers (mainly text-based interfaces) for 18 years, so excuse any perceived bias.
There are a few things on human-computer interfaces which I can say with some certainty:
1. perceived ease-of-use is strictly a per-user variable. there is a good chance that whichever type of interface you 'learned' computers by is the one you are most comfortable with.
2. graphical interfaces are no less, no more efficient than text interfaces in the real world. It is largely the *input device* which determines efficiency of both interface types. For example, I have configured my X11 environment specifically to minimize use of the mouse. Mice are *clumsy*, and constantly having to reach for them slows down data/text entry greatly.
3. what is commonly called a 'graphical interface' really isn't. everything, from MacOS X to BeOS, is a hybrid text/graphics interface. a true graphical interface would have much less text, much more graphics representing concepts.
4. IMVHO, text is a step up from graphical communication. it involves linguistics, exercises that part of the brain. if you want pictures for interaction, buy a picturebook or become a caveman.
5. the beauty of Unix is the tersely worded method of interaction. I find it much, much easier to type something like egrep 'a|b' '*.[ch]' than "find either 'a' or 'b' or both in all files with extension 'c' or 'h'".
Lets face it folks, the concious level of our brain works much, much faster than we can type. the Unix shell environment allows us (through use of 'abbreviations') to minimize the time between "thought" and "action". Lets keep a good thing going, eh?
While I'm all for making computers easier to use, would typing "move all files beginning with the letter a to the directory called 'foo'" be any improvement over "mv a* foo" (or "move a* foo" for that matter)?
No. Neither would speaking it, necessarily. It's the same problem the GUI has had for years. Making computers accesible to people without necessitating them learning about computers is like putting people behind the wheel without requiring them to learn how to drive. You get accidents. Like melissa, "love bug", chernobyl et al. Somebody in the Time letters section seemed to vehemently believe the solution to all these things was to have an international cyber police force and strict international laws exacting harsh penalties for "cyberhacking" (as he called it). Right, like that would stop it. All three of these exploits took advantage of peoples' ignorance about how to use the systems they were using.
In the days when you had to read a book to use a computer, you also probably knew to back up your files and not open documents from an untrusted source. All my old "intro to DOS" books went over this stuff. AFAIR every Linux/UNIX book I've read has mentioned the usefulness of backing up your files.
You also get "where's the any key" and "can you email me my password" type of junk. Requiring learning as a bar to entry for computers doesn't really ultimately keep many people out but it makes sure the people who get in know how to change a flat and check their oil, and not to pick up hitch hikers by the side of the road.
Rather than typing 'man mv' and trawling through some very badly written documentation...
Consider the following (%gt; is the normal prompt)
%gt; ? I want to move all files beginning with 'a' to '/here.for.example' /here.for.example
The command for that is mv a*
%gt; ! do it
%gt; ? How do I delete a read-only file with rm
The switch -f 'forces' the remove. i.e. You type rm -f %lt;files%gt
%gt; rm -f %lt;tfiles%gt;
Even for experienced 'nix-ers given an unfamiliar command (possibly/probably from something new), you can discuss what it does, call for help with a query, etc. This would be helpful, since the current system of man-pages isn't the best thing in the world.
John
John_Chalisque
last time i tried that in windoze it didn't work.
course it has been awhile, I try to stay away from windows as much as possible. I don't want anyone at work finding out I can do windows as well as UNIX, I'd be in a world of hurt then.
why do you feel the need to admit you're a dickless asshole?
don't you mean 'move a*.* foo'?
Under WinNT/2000 all files are assumed to have a . extension, even if they do not.
move t*.* would match
test
test.txt
test.com
test.doc
I won't argue if it's good or bad, that's just the way it is...
I think what you're describing is an office assistant that works for free. Your only hope is that somehow AI can be made more intelligent than your average office assistant.
This is something I've heard *way* too many times.
/etc/fstab file, b) where exactly the partition or drive is, c) whether the drive the partition is on is SCSI or IDE, d) how to figure out the device name based on where the partition is on the drive and what type of drive, and e) what filesystem the partition is formatted in.
Of course (to use your phrasing) computers need to be dumbed down. There's way too much complexity that the computer really should be handling, and not the user. And I don't just mean in linux, either. Windows (and to a lesser extent, Mac OS) is almost as bad - it just puts a thin veneer of user-friendliness over the whole mess.
In Linux, to access the files on an unmounted partition, you need to know a) the syntax of the mount command or the
Okay. If you run fdisk, it's easy to see that linux knows what partitions are on your system and what filesystem they're in! Who is served by telling the OS information it *already knows*?
Ease of use does not imply instability, or lack of security, or proprietary BS that makes life hard for everyone else (like, say, Outlook stationery or Word 2000). It just so happens that UNIX users and vendors haven't cared about ease of use, and Microsoft and Apple haven't really cared about stability or security.
IMO, revolutionary advances in computing are generally a matter of making things simpler and more elegant. The more sophisticated things are, the more chances for things to be screwed up. Not to mention the speed penalties suffered.
> mv a* foo isn't hard to learn!
But you have to learn it. Using natural language would save people needing to learn the commands.
> We need to go in the other direction. "Open my wedding photos."
> "Spell-check the latest draft of my current novel." "When did I
> receive an e-mail from my publisher with 'foo' in the subject?"
this is a very good point. . the value of extending the human-computer interface is that it makes complicated things easier (or possible), not that it duplicates the existing interface for simple things.
the command-line interface is, broadly speaking, based on a fairly limited model of user behavior and environment. . it assumes the existence of a 'user' who owns a comparatively small number of 'files' (less than a few hundred per directory), and leaves the two big questions: "what's in this file?" and "where's the file that has X?" entirely up to the user. . yes, unix offers utilities like grep, which can do literal text searches, but there's still no good utility for non-literal meta-descriptions, like the ones you describe.
meanwhile, as drive capacity has grown, the assumptions behind the CLI have lost some of their validity. . most people's hard drives are a compost heap of badly-organized information, full of file trees they no longer remember creating. . we need, good, intuitive tools that help us organize tens of thousands of files, not the digital equivalent of half a dozen warehouses full of filing cabinets. . that probably means that we'll have to pass some of the work of organizing things off to background processes (agents), and definitely means that we need a more sophisticated interface for getting at things.
whether natural language has any part in that is still an open question, though.
Faster hardware is essentially irrelevant to this argument. Any of the algorithms that run on a modern PC would have run on a VAX or the facilities that universities and corporations had available through the 70's and 80's. They may have taken minutes rather than seconds to run, but for research that's generally not considered a problem. What hasn't changed all that much is the algorithms used to do natural language processing, and their limitations are still pretty much the same as ever - difficulties with ambiguity, and extremely limited vocabulary and contextual knowledge (the last difficulty being the fundamental problem with all AI-related research). Oh, and by the way, mainframes of the 70's and 80's, and probably high-end departmental servers, had I/O architectures that were considerably more advanced in many respects than the PCI bus.
At one of the best universities in the Asia-Pacific. While I wasn't involved in NLP research, colleagues were, and if there was some fundamental improvement I would have heard about it.
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
Actually, I've written such a parser; it was a hack, and very limited (recorded AppleScript only) but it worked.
Having done this, I discovered people much smarter than me (Henry Lieberman at MIT, for one) had done it properly: they fed a grammer into one of those compiler-parser-write-program things and it worked.
There is a lot more stucture to AppleScript than might be immediately apparent. AppleScript is just one representation of the "Open Scripting Architecure", which lets you represent "AppleScript programs" in pretty much any language you care to define. See the C-like Frontier UserTalk for an example of somethig that looks a little easier to parse.
/* being rant */
It is my beleif that people are going about this the wrong way.
Humans adapt better than machines. Much Better. Instead of humans labouring to create machines that adapt to the way Humans interact NOW is less efficient than teaching humans to adapt to a scheme which machines can easily work with. One of the main problems the computer industry has faced in the past is that the vast majority of people had never used a computer before, and didnt understand the logic behind how they worked, how to interact with them, and what they could do for you. Pretty soon, this is going to change. More and more young people today grow up with computers.
Technology that is currently aimed at making it easy for neophytes to get ramped up into using computers is going to HOLD PEOPLE BACK in the future.
As humanity has progressed, society has always adapted to the important inventions and developments that have happened. A simple example is cars. Cars initiall had a very complex interface, and they still do. You dont tell your car to "go forward" "turn right" or "turn left".. you talk in a language that the machine can understand (a steering wheel, pedals, stickshifts, etc..). Pundits today would label this as "unintuitive". Sure it is unintuitive.. but do you know how SLOW and PAINFUL it would be to drive using an "intuitive" "human based" interface?
We may or may not be able to come up with computers that grok natural language commands. But I beleive that this will make computers less efficient. Computers today have much more potential than the current "allowing you to do the things you already do in a different way". Just like the automobile revolutionized the way society interacted, computers have the potential to revolutionalize the way we currently interact. But to be able to do that, society is going to HAVE to learn new things, knowledge that is relavent to this particular invention. To use a tool effectively, YOU have to adapt to it. To use a tool as powerful as a computer, people are going to have to LEARN, and I think that the vast majority of people have the capability to understand the concepts behind computers, and put them to good use.
The current conception that programming is "hard", and something to be left to the geeks and hackers, is (I beleive) superstition. Modern languages are based on a few concepts that are easily understandable.
The direction that we should be pursuing is not trying to dumb down computers to the level that people currently interact at, but raise people to a level of knowledge where they have the power to use computers effectively.
This is why instead of supporting initiatives like these, I prefer things like Guido's "Computer programming for everybody" project. In the long run, this will benefit society much more than any "natural language command line".
/* end rant */
-Laxitive
There was a database I used in DOS long ago that accepted inquiries like "make a report of all employees who's payrate is more than 7.50".. it worked suprisingly well.
.. or whatever then you might just have to open an xterm... the interface for dealing with files and processes already exists.
That kind of thing is going to work with a database inquiry but not with an OS and file system.
I think that if all of a user's documents, information and methods were stored in one database -- or at least links to all of their files stored in a database -- then it could work out better.
(most) People don't think/speak in file directories and processes. Instead they talk about people, documents, information, and projects. A user's personal data would have to be organized accordingly.
But if you want to mv img??.jp*
because the people this is targeted at wouldn't know what "mv a* foo" means.
btw, first post.
The pic language by Brian Kernighan, used as a preprocessing language that describes how to draw and format simple graphics like boxes, arrows etc. I believe Richard Stevens used it in all his illustrations. Pic uses pieces of the english grammar. Its looks a lot like english sometimes.p s
Check out http://www.kohala.com/start/troff/cstr116.ps
http://www.kohala.com/start/troff/gpic.raymond.
-- Kirk S
...so newbies can write what they mean and worry about learning the "shortcuts" later. An OS that had only a human interface would suck, but if it had both it'd be pretty cool, like when I've been away from *nix for a while and I can't rememeber the damn syntax of various command options.
http://overwhelmed.org
I'm going to make the argument that the POSIX CLI is the closest thing we have to language parsing right now. Unfortunately /usr/bin is chock full of unusual programs with non-intuitive names and each one has to be learned seperately. The GNU project has done wonders with the standard POSIX utilities, having '-h --help' and long options '--this-option-here=foo'.
Where we need to go from here is a standard, well named and optioned, command set that is very easy to figure out, given a little training and a few rules. For example if a utility can have file input it should take the argument '-f or --file' and that should be standard. I have been using Linux and other Unices for several years and still have to look at the man pages for common commands. Annother example is the very useful utility awk(1), there is no way I would have found it by myself and no way I would have learned its syntax by myself, the find(1) utility is similar in that I still have to look up the man page for exact syntax when I use it.
I know that I am rambling on but I really think that CLI interfaces with output-mainly windowing displays should be our future, but not if the full power of the environment isn't accessable but to gurus. My mom should be able to type "print foo.txt --duplex --pretty-print" instead of having to remember "enscript -2rG --pretty-print=xyz -DDuplex:true foo.txt" or "list foo.txt | search for 'sometext' | print --with-fancy-header --page-numbers --to=Ywindow"
-- Remember: Wherever you go, there you are!
To make a comletely NL CLI, one would have to create a complete AI first. I hope I don't need to tell you that task is a bit over Microsoft's head. On the other hand, they don't have to make it complete. For instance, a person might type c:>go to my documets folder. And command interpreter should be able to understand it. If they took, let's say, 300 or 400 most common commands people might use, that would be a great help for newbies. It may also say something like "next time when you need to do this, you might want to try shorter command: cd c:\My Documents. Of course, MS being what it is, they will mess it all up somehow, but this is a very interesting direction nevertheless. With all the newbies pouring into Linux, we might want to do the same. As you see, it won't be all that hard to make a list of most common commands people might want to do and try to parse them.
-- ATTENTION: do not read this sig. It doesn't say much.
Lots of comments on why this is hard.
clue- it ain't hard.
Combination means you're gonna see voice and GUI working together. If a command is fuzzy you'll get a checkbox of possibles where you can X the obvious wrong ones, let the possibles alone, and Check the one you want this time.
Iteration is one of those neat things people do when they refine a design. Grandma can do it too. This isn't too hard cause grandma is gonna converge very swiftly on that checkbook.
What the academic perfectionists seem to keep missing is that the silly computer has, for a command, about 0.001% of the possible options that the whole language does.
If you say, "Gimme Word" its gonna open MS Word cause "What Word do you want, allmighty master" makes a lot less sense in a command line context.
So get off it. Shortcuts gone audio will *not* be that hard to parse.
Just another perl hacker in Bangkok
Cliff is right: it is not better to type move all files beginning with the letter a to the directory called 'foo'" than to type "mv a* foo". I predict this one will be as much of a hit as Microsoft's Bob.
Crispin Cowan
-----
Immunix: Free Hardened Linux
Chief Scientist, WireX
You are Microsoft Bob, and I claim my dopey canine assistant.
I wonder if I still have the box for Bob lying around here...
Funny that Microsoft has *explicitly* discouraged users from using the command-line prompt (says so in the Windows 95 Resource Kit, on the CD). This is why the MSDOS-box still doesn't have filename completion, or any of the modern UNIX shell features -- they don't want you to use it.
But oh, now that we have whizzy NLP that works properly 10% of the time, using the keyboard is "legit" again. Puhleez.
"Do you feel you need to moo all your vials beginning with abe to the directory kunf-fu?"
--
SCO employee? Check out the bounty
> That's against all user interface and usability guidelines
/sure/ they're correct and definitive?
Were these guidelines written on tablets of stone, or something? What makes you so
"Enter a check", huh?
IMHO, before somebody solves the 'strong AI problem', the computer could quite simply ask the user:
"Do you want to enter a financial check, make an illegal chess move or make a constraint in the program you are writing?"
The system should always calculate an amount of ambiguity for each statement, and if the action is clear enough, execute it. If not, then ask for clarification.
As for the story of "delete *$" here, some commands should be marked more "dangerous" than others. In these cases confirmation should be asked much more often than in non-dangerous activities.
I doubt, therefore I may be.
I agree, natural language on top of CLI is not an entirely useful solution. A means of the NL-CLI to learn the user is really key...that and better ways of it determining how the users uses language.
I've been working on a few designs for a partially NL-CLI for a while now, and realized that the NL understanding needs to be able to learn what the user intends. This ranges from simple aliases for commands, variables, and params, to things like how the user switches thinking contexts. As well, remember how something was done properly before can go a long way to being able to reproduce it again (feedback loops). Complex things should never really be complex the second time around...the interpreter should remember (with positive feedback) what was done. Even things like identifying what can change (ie., the variables) between a number of like actions can be done.
I shudder to think that MS is attempting another NL interface, not because I hate them, but more because none of the learning would be opened to the rest of the development world to learn from their mistakes and/or successes.
mx
That would be ash, AKA the Adventure Shell, the most convoluted bash script on the face of the planet.
To many users that will still be too complicated.
It has to understand sentences as:
"Move all the wiggly-digglies I typed in last week from the big disk disk to the small ohwhatwasitsnameagain"
--- If OS were buildings, then the first woodpecker to come around would erase 95 % of civilization.
UNIX has been designed to do this...but only for programmers. ever notice that most UNIX command are only two letters ? ever notice that the UNIX mentoring system (and man pages) are built to increase the level at which the user uses the system ?
Or have the computer confirm your actions; natural languages can be very ambiguous, so you either limit it to remove it, or more sensibly you guess what the user MIGHT want and ask nicely which action the user meant. And as for spaces in filenames.. can't say I care really, I just press tab and my shell fills it in for me :)
mv ~/**/*(m-7) /mnt/zip
or similar
This first is the obvious problem -- understanding natural language seems to be an AI-complete problem. ('AI-complete' is a term borrowed from the normal classification of the difficulty of problems, and means that a problem is equivalent to and/or requires AI.) The other problem is more subtle -- define 'wedding photos' for me. People can and /want/ to describe the contents of something rather than where it resides. (I've seen people who prefer to search for something rather than type in a URL, even if they know it.) The problem of meta-data is very, very, big. How many people do you know who even enter so much meta-data as the title of a document when they save it? (I don't mean the name -- most WP's have an option to enter author/title/subject/keywords to help them find your document.) Even aside from formulating a meta-data standard, how do you /get/ that meta-data? Not all of it, and almost all of the useful bits, can't be -- except, perhaps, with AI.
-_Quinn
Reality Maintenance Group, Silver City Construction Co., Ltd.
The last thing I want to do is type out extremely long sentences to accomplish simple tasks like the example notes. However, it is a much shorter leap to say what I'm thinking ("move all . . .") and have the computer go off of that. I'm comfortable with the mental translation of my intentions to computer commands when I'm typing things in. When I'm talking (or writing), I prefer stream of consciousness. So keep the C in CLI and use natural language for speaking, like I do.
But I stand by my main point... The "natural language" aspect of Applescript actually makes it harder to learn than a conventional language, even if the code is much easier to understand.
MSK
Applescript, which was in some ways the successor to Hypercard, took the natural language idea to new lows. It sounded like a great idea at first... Applescript code would actually contain lines like:
Tell the Finder to close the active window.
(That may not be actual Applescript, but it's very close.)
Of course, anyone who can read English can understand what that means. There's only one possible interpretation. The problem is, there are a million different ways that it might be written, and only a few of them actually work. I.e. "Ask the Finder to get rid of the active window," "Close the window that is in use," etc. The language did accept an impressive number of variations, but it couldn't be more than a small fraction of what the average user might come up with.
The result was a read-only language, which doesn't really help clueless newbies.
MSK
Natural language is ambiguous way beyond peoples imagination, and if there's anything we don't need it is ambiguity in giving commands to a computer. NL doesn't _seem_ ambiguous because we are so good at disambiguating it (most of the time, anyway) using our own extensive knowledge base, about what is "reasonable". For a computer to have access to a similar knowledge base (simulating a brain, in short), is a pretty impossible task at this point in time.
Giving a computer access to such a knowledge base is the goal of Doug Lenat's Cyc Project:
http://www.cyc.com/index.html
On my Amiga, I regularly type:
;)
;)
1.> List all files a#? since yesterday to "DH0:foo"
.. to get all the files (i.e. not directories as
well) named a-something (#? is like *) created
since yesterday (umm.. self explanatory
I don't see what the big deal is about. Natural
language CLI's just need programs that take natural
language input - AmigaOS's ReadArgs() templating
system makes this very very easy to do.
It couldn't be too hard to make a linux app that
takes input in a semi-natural way. See if you can't
get the source for 'ls' and just change all the -l
and -s and -G into real words.
And SQL as well, natural enough for me, try this in
mysql or something:
SELECT * FROM sometable WHERE somefield = 'bobby'
ORDER BY somevalue;
Having *REALLY* natural language CLI's would be a
pain in the ass, to be honest. Even on Star Trek,
they rarely use the computer to do that much voice
input, and most people I know can type the above
lines faster than they can speak them.
There has to be a middle ground: I still can't
remember what the commands to ls are for. But I
can remember them for "list", 'cos they're natural.
But not overly natural that I spend all day
typing them
Matt
I seriously doubt your knowledge of AppleScript. This scripting system is alive and well, under active development by Apple, and making a lot of money for a lot of companies through system automation.
A "read-only" language? What on earth is that supposed to mean? I write AppleScript almost every day.
The movie, incidentally, was called Let Him Have It, and was quite good IMHO.
Wherever there's a will, there's a motorway.
NLP would be just one step away from being able to talk to your computer to get work done in a natural way. Do you really want to *say* "arr emm space dash arr eff space slash" or "Delete all files from root filesystem." Commandline input with NLP will be a bit too wordy. I think the anti-mac article had the right idea of using some cross between commandline options and NLP like Zork and other text based adventure games. But, why not develope a good NLP and scale it down for users who want to interface on the commandline with the simplified NLP?
Of course, by the time we get to the point that this is usable by the average user... we should have some kind of gardian AI to know that the above is bad (double check when someone says it) and to learn from the user by watching the user work. And of course, heuristics to make sure that User X is the one actually saying things, and that the user is saying things to the computer.
Its far off in computing terms, but probably closer than you think in the real world time scale.
Making computers easy to use for non-computer people. The Windows interface is all about trying to come up with intuitive systems; systems you don't have to learn or know anything about in order to use (and so long as you get a machine with Windows pre-installed, windows is pretty good at it... until the user trys to update his video card drivers because some game tells him to, and then he has to reinstall windows, and it asks him what port his printer is on, and he phones up me and says "What's a port?"... But I digress).
/".
In this respect, a natural language interface is perfect. "mv a* foo" is not exactly a command the novice might guess.
My chief concern is the imperfections in algorithims involved in natural language processing. Knowing Microsoft, typing in "play starcraft" is likely to bring up anything from a "helpful" paperclip telling me how to organize my starcraft documents, to a "su;rm -rf
My customer was also highly lacking in knowledge of how to turn on a computer. My feeling is that she _needed_ to learn how to do something.
She refused to learn how to install her own programs (and threw a fit when I told her it would cost her 40 bucks for me to come install it for her), refused to learn how to make a shortcut, refused to learn how to enter in a password and username, I could go on for an hour.
Sometimes unless you force someone to learn, you are doing them no good.
I make all of my customers do the connection manually, because I dont want to be getting calls whenever the automatic dialup fails (and it does, quite often from experence) and they get weird errors.
At least they learn something, and maybe once they learn one thing, they might realize how much fun (and cheaper) it is to do it themselves.
Brielle
Your right, I do have bad social skills, but I am a very good tech support person and I do give help to people who need it. I'm really not a tech support person, I'm a systems administrator who was forced into tech support by companies who were to lazy to hire actual tech support people (which is becoming more and more common these days).
I'm not doing this for the convience of myself, because if anything, by making the customer learn how to do things, I'm losing money from possible business.
I have gotten many thanks from people though for my approach to making people do things that way.
When people do things for themselves they get confidence in that they can do it and that the computer really isn't that hard once you know it, they learn how to read and use the tools they have to make things happen, they can go and teach other people how to do the things they know, and more.
It all comes back to the point I have been trying to make:
People wont learn how to use the computer if they have someone else to do it for them. If they are forced to do common tasks themselves, they become more experenced and better members of the computer using community.
-- Nuff Said --
Brielle
While I'm all for making computers easier to use, would typing "move all files beginning with the letter a to the directory called 'foo'" be any improvement over "mv a* foo" (or "move a* foo" for that matter)?
Well, no, not to experienced people, but try thinking outside of your Unix world for a while.
The kind of thing the type-in line does is make tasks that traditional CLI can't do easily, faster.
e.g.
user: schedule a meeting for me with bob.
computer: when would you like to meet with bob?
user: friday sometime.
computer: where would you like to meet with bob?
user: in his office.
computer: ok, checking bob's schedule (goes over the internet using XML to get bob's schedule which you have been granted access to)....checking your schedule.
ok, i've scheduled a meeting for you with bob in his office at 2pm on friday afternoon. Is this ok?
user: yep.
computer: done.
It's a natural interface, e.g. hopefully will be no different from you talking to a secretary. And you don't need a computer science degree to do it from a CLI.
Eventually in the future, the type-in line will be replaced by a speech recognition engine.
find dir -type f -mtime -7 -print | cpio -pvmd zip-mount-point
Trivial. Once you've done this 2-3 times, you never forget. find+cpio rulez...
Now the interesting thing here is that the above Unix command tells not only which file to copy, but also how to arrange them on the target media. That is left out of your plain language command. Did you mean just put them all in one flat top-level directory? If so, what about name-space collisions? With natural language, context is just everything and you're always leaving little details out.
Furthermore I think this move by MS is bad for the CLI. People complain about having to type "mv a* foo" and that is much faster than the equivalent GUI way. What are they going to say when they have to type whole sentences? Sure figuring out what to tell the computer will be easier, but the GUI will be even easier, and faster. The advantage of the CLI will be gone.
Besides, who wants to have to write shell books to replace all their shell scripts? Geez those things could get downright huge!
Icon based interfaces are crude and slow, the only reason for their adoption is that 3 year olds can use them. We communicate through language and its time to communicate with computers in our language.
A shell interface which leverages the rich diversity of Unix commands into a powerful interface my grandfather can use should be possible. An environment in which users could type anything from: What's 2+2? to: Encrypt that last email from Alice and send it to Bob. or:Remind me to take out the garbage before dinner.
(If you want to change the priority of the job just change the manner of your request. Asking nicely will get you a quick response, while berating the computer will lower the priority of the job.)
It wouldn't take too much to get something like this working at a simple level, but it would be alot easier if there were any open source natural language interface to work from. I haven't found any yet, but would love to know if one exists.
The thing that excites me about this stuff is that once its working we could try to splice in voice recognition. Just what do you think you're doing Dave!!!
"While I'm all for making computers easier to use, would typing "move all files beginning with the letter a to the directory called 'foo'" be any improvement over "mv a* foo" (or "move a* foo" for that matter)?" Duh! That's a stupid geek question. How many of the users that this stuff is aimed at know what mv or * mean? Sure it's simple to use maybe, but if I tell someone to use a wildcard half the time I get Homer eyes in return and realize that I have to help out by doing it myself. Doh!
Hey, you think your house is cool?
Howdy ho!
:-) I remember playing with it a few years ago, it's rather humorous.
There is a shellscript that comes with BASH (/usr/doc/bash-doc-2.04/adventure.sh in a Mandrake 7.1 install) that could be used as a users' shell. It's no more advanced than the parser which came with the x00 point adventure games, but it's interesting as a simple proof of concept.
Oddly enough, it doesn't seem to want to execute now
Mr. Hankey
GPL: Free as in will
Exactly. Think of "it" as being like $_ in Perl. Now think of what would happen if you tried to write a program in Perl with no other variables in Perl...
Oh, and I did write a calculator in HyperTalk. I also wrote a psuedo-Logo-ish stack, with a button for the turtle...
--Arcum
Hell, doesn't anybody remember King's Quest III (and its brethren)? The Black Cauldron?
Eat shit!
You should watch your language!
Flog the dolphin.
I don't know how to "flog".
Put the cauldron over the wizard's head
You sneak up on Mordack and quickly thrust the black cauldron onto his head!
That's more like it!
I believe AppleScript is probably the closest thing to a natural language text based interface I have seen so far.
It uses common English phrases to do just about anything in almost any application. It is one of the main reasons many graphics-oriented businesses didn't drop the Mac back in the dark days of the mid '90s. It is very easy to learn and makes common tasks, especially batch processing large groups of files fast and easy.
Somehow I fear most of its syntax will be lifted and relabled a Microsoft "innovation".
Anyway, here are a few links:
Apple's AppleScript Site
ScriptWeb
AppleScripter.com
Would that be such a bad thing, really?
Hmm... What about a voice-recognition/natural text recognintion pci-card? :-)
/.Mattsson - My native language is not English, so please don't whine over linguistic errors. (That's lame anyway...)
An experiment to start in this direction would be to have people use a system and tell them it has a natural language interface and see what they do. You could have a person monitoring their input remotely, then responding to their actions. It would appear as if the system was responding to their natural language commands.
The reason for doing this would be to see how people act with what they think is an intelligent machine. Once you know that, you design the interface to match those expectations.
-jimbo
"Hold me Bob!" "I would if I could man!" -Larry and Bob in VeggieTales
So Mr Gates has finally admitted that he runs your machine....And to get control back, you'll have to buy his softare....again.
Supposedly, ease of use and control was what the Windows environment was all about. Has Microsoft come to the conclusion that their GUI has made things harder on the user?
The society for a thought-free internet welcomes you.
When Bill Atkinson was adding scripting to his Rolodex program (and yes, he did get in trouble for using the name Rolodex) and turning it into Wildcard (which unfortunatly was someone elses trademark. Eventually Apple picked Hypercard because it was such a dumb name, it wasn't taken yet.) At first he was planning on just some action parameters to the program, and was figuring on one "accumulator" like location to hold info. When they scope of Wildcard grew from flatfile database to hypertext authoring system the scope of the scripting language changed, named local and global variables were needed, and the accumulator turned into the variable it.
Signal 11 was at least on the right track, even if he had some of the facts a bit off. There were certain things that would only modify the contents of it, so put it into|before|after destination was probably the most frequent statement in Hypertalk scripts. Certain noise words like the and to were allowed in order to help readability, but it was difficult to remember which constructs allowed them and which did not. (The statement delete word 3 of field "high score" worked but delete the third word of the field "high score" didn't) This tended to make Hypertalk easy to read, but harder to write. Not the ideal for a natual language style CLI, like we are discussing, but not bad for a programming language designed to foster cut-and-paste ad-hoc development.
The syntax style lives on in the Applescript (and a bit in MacroMedia Director, but they seem to be moving away from that with their "javascript-style" language.) Maybe the verbose "english style" language was a good choice for AppleScript. User scripting of desktop applications probably does have a lot of cut-and-paste style of code reuse. And someone is probably going to be able to figure out what is going when seeing a snippet of Applescript over VBSCript (one of WSH's choice of languages.)
The people who chose to use Hypertalk-style languages were really missing the point of what made Hypercard such a great development environment. The best thing about it was the lack of destinction between development mode and running mode. It was kind of like a baby-smalltalk or baby-lisp environment. So many people are enamored with interpreted language that cut the edit-compile-link-run down to edit-run, or with IDE's that hide the compile-link phases down to a single keypress or menu-selection, that they don't realize that even edit-run isn't a distinction that needs to be there. At the Perl conference Damian Conway and Aaron Wigley gave a talk about Llamacard, a Hypercard-like environment written in Perl and extensible with perThis l. It looks like something I really want to play around with.
A side note to this is that the english language in particular has many homonyms which could make interpreting speech more difficult. If it was written down it wouldn't be as bad. But other languages, like spanish for instance, have no homonyms because it's a phonetic langauge and thus every word sounds different. It'd be nice if english had this feature it would make things a lot less ambiguous, but it doesn't seem to, I just hope it's fixed in a future service pack or release.
Things you think are in the Constitution, but are not.
They have it both as a COM object and a Linux library and the price isn't bad for all the functionality that you actually get.
Everybody seems to be interested in making UIs more intuitive and that's all good except that...what's intuitive to me isn't to you... Most people use the computer for a very limited use (web/email/word processing/games). Natural language UI just makes it more complicated for them to remember. This kind of UI might make sense when we have good AI that can not only PARSE the commands but really UNDERSTAND what the person meant... and i don't think we have that yet! For now, create a simple UI and people just need to spend some time to learn it... $.02
It more or less said that although such a CLI may be an improvement, many users do not enjoy typing when it comes to controlling their computers. Worse still, what does a Natural lanaguage CLI often forces them to type more (e.g. you are supposed to ask jeeves "What is the tallest mountain in the world?" rather than type "tallest mountain world" into Google say. Worse still, most people are slow typists so this would also count against such an interface.
Some people prefer keyboards and that is good. Some people prefer GUIs and that is also good. However forcing the user to used grammar and punctuation in the CLI is unlikely to win the GUI majority over.
What about hooking it up to that thing that tracks the user's attention? Whatever you're looking at would get the "focus".
-- Cisk for the Cisk God
Note that the whole concept of a directory structure shouldn't be prominent in the first place; the data would rather be organized by the very same associations that the user would use to manipulate them. Directory structure belongs in the CLI world.
This points out the terrible consequences of mistaking the context. The case was in the 1950s; the man who shot the policeman was under 18 and incacerated, the man who said 'Let him have it' was hanged. By the time computers are intelligent enough to carry out a conversation with you ('Put those files away for storage.','Which files?','Oh those ones over there.') we won't need to perform those kind of operations, because it'll amount to a semi-autonomous AI.
It sounds like a major processor hog. It may not be quite as bad a voice recongnition, but it'll still hurt. I guess it's time to buy a 1+ GHz processor.
Yes, "move all files beginning with 'a' to 'foo'" would be preferable to "move a* foo" because the latter is ambiguous, e.g., is that "move a * foo"? The standard Unix semantics are far too ambiguous when it comes to the command line.
I/O Error G-17: Aborting Installation
There is a potential for mismatch - using the wrong thing for the task.
:). Or the language and nuances will be come so esoteric that it's boils down to the same thing - it could still technically be English but it'll be English so technical that only a few humans can understand it and use it.
If you are doing machine things, for best control you need to talk in the machine manner.
Of course there are several layers - you may want to do higher level stuff and so only have to talk in a higher level manner. But if you want to manipulate stuff at a lower level, using higher level methods can get you in trouble.
For example if you're talking about manipulating files as in files in the filesystem then it's no point having natural language style things. It's not suitable, you'll have to keep doing OOPS! I didn't mean to move THAT config file (there could be hundreds, plus backups), no that one. You'll be spending so much time with UNDO that you might as well get back to the real stuff
Now if you're talking about manipulating files as the way say some people understand it, then you can talk the language of those people. "Can you get me the Baker file?". That works. But that will only work if the computer is in the loop - and knows who/what Baker is. Is that likely to happen soon? Do we really want that?
I don't want to have a dialog with my computer just so that I can muck around with it's internals. It's as silly as a surgeon having a discussion with the patient on which organ to remove.
And I don't want to play psychiatrist with my computer - "Why so sad computer?".
Microsoft's dream has always been them in control of the computer and the computer in control of everything else. Computer makes most of the decisions.
I prefer the users to have control. But the way the industry is driving things, the general public will have no idea how to control stuff safely, so should we continue in that direction? What do we really gain? More automation? That means fewer humans in charge (Mr Gates? Mr Torvalds?). Who's serving who anyway?
Cheerio,
Link.
I really wasn't lamenting, but rather stating as a matter of fact that you can't both have the cookie and eat it. In this world I personally think that we eat a bit to much cookies.
Thanks for the reply
return -ENOSIG;
This could be combined with speech recognition (speech-to-text) or any type of *-to-text. The important thing is to make this an open Standard with (of-course) at least one Free implementation.
The back-end of this should IMHO be a shell-type interface. Why re-invent /bin/sh ? So we have: *-to-text-to-shell-to-system_calls. (Or, in a MS/AOL-world *-to-text-to-spell_checking-to-shell-to-system_cal ls) I'm afraid that if MS (or any company) does this f1rZt, then we'll end up in incompability-hell once again. The prize, of course, of a (working) capitalistic world.
Moreover, in the case of not-english languages, I think that it would be easier to convert languages to english than make new lang-backends for each language.
return -ENOSIG;
Amiga OS at one point started to include the REXX language and many programs where supporting commands sent through communication ports for that AREXX. Well they were called AREXX ports but one didn't really have to use REXX to send commands.
In any case I think this could somewhat lead to a similar situation.. where programs will eventually work in harmony because they have a common language (natural language !).
Anyhow as far as I remember, when Michael Abrash left id to go back to MS he was working on natural language parsing. I wonder how much he contributed and if he's going to release any interesting results about it.
I seem to remember an article I think in PC Magazine or some other ZDNET zine that claimed to have a copy of Windows Chichago (Windows 4.0, aka Win9x) that had a semi working version of this interface. A short while later I remember hearing microsoft claiming that it would be a part of memphis and nashville (Win9x). Supposedly Windows 2000 was supposed to have a way to type "read email" and it would. Funny that there hasn't been anyone claiming this for WinME yet.
I personally would rather just have a working and well supported copy of OS/2 with Voice. Friend of mine a number of years ago was able to run the voice interface on OS/2 accidently set a switch to auto translate from english spoken to spanish written. Looked to have been a pretty good translation for the time circa 1994. That is what I call a cool feature.
So when will microsoft impliment something like that? They claim for the 6th year now apparently to have this interface and I just want to see how much it sucks now. I'm tired of waiting.
One final thought, imagine the support costs for the users typing in "reed mail" and it giving an error like "bad command or file name, <a>bort, <r>etry, <i>gnore?"
--
The program isn't debugged until the last user is dead.
Every time Microsoft comes out with something that is supposed to make my life easier, it always has the opposite effect ... that annoying talking paper clip comes to mind.
No, it would be like this msCLI> mount linux filesystem This filesystem has been damaged, reformatting.
Or even a supernatural language interface! The ESP command line. then the computer could 'Do what I think, not what I say.' I can think of two drawbacks:
1: when your dead relatives start communicating with your computer.
2: If your computer is on, your spouse has a way of finding out what you really are thinking, even if just by accident.
Matt
The big issue with NLP is the ambiguity problem, which can only be completely solved if computers have Real World Knowledge. In the meantime, reasonable interfaces can be created for specific domains. The most important things to consider when designing such a system are robustness and error handling. This means, as was said before: if you're not sure, ask the user what he means. But use any information at your disposal to disambiguate first.
I can imagine it now. Having stayed up all night finishing my report in word - only to discover that i've got a garbled file... in my caffiene/taurine/sugar induced delusion i scream.
"Well you may as well delete all my fscking files"
Only to be greeted by a smiling avatar of bill gates saying "certainly graham"
I think NL CLIs will only be of use when voice operated computers confuse people who don't know how to pronounce "rm -rf /home/sjc77/t+smgznscns" and prefer something like "Remove that directory with all my scans from Trout and Salmon Magazine"
Not just the beeping KB, but the useless flashy animations.
--
Soma: because a gramme is better than a damn.
If you look in some Linux man pages, you find that some essential files have different locations, names, and command line options. In Windows, I throw my documents on the D: drive, while Windows wants them in the C:\My Documents directory. On the Mac, you can drag and drop a folder full of executable files to another location without warnings or apparent problems. This would drive an SLI interpreter crazy.
If the filename is automatically deduced from the contents, and properly indexed, an SLI could work on one of these open systems. (I'm not referring to open source, but to the fact that its' internal workings are somewhat modifiable.) But what smart Windows user keeps the Fast Find extension running constantly? Automatic systems don't like interference, and open systems thrive by it. SLI will only work reliably on video games, internet appliances, and web site indices.
Tell me what makes you so afraid
Of all those people you say you hate
msCLI> delete all my useless files
...
... deleting
msCLI> error: command.com not found
msCLI> error: C:\Windows\ not found... shutting down.
finally they get something right!
--
my other post is +5 insightful
They've been trying something along those lines for years. It still doesn't work, and all it's doing is looking for stuff.
Jon, I would have loved to email you for more discussion, but I can't figure out your email- address in two tries and I'll leave it at that. Don't give in to spam, use your real email-address!
I have been teaching computers for 20 years now to linguists at a dutch university. I found that when MS-Windows became more and more popular, it became harder and harder to teach the students how to *really* use computer- languages. A certain level of abstraction seems to be necessary for non-trivial work, and whereas working with a CLI prepares people for this level of abstraction, working with a GUI seems to inhibit it. paai@kub.nl
Yeah.. Would this thing do a spell check as well? The possibility of typos would be imense!(sp? -see what I mean?)
.. And could you get a 1337 5p33k patch?
"m0v3 d1r3c70ry f00 70 d1r3c70ry 1337_h4ck5"
air and light and time and space
find ~/ -mtime -7 -exec mv {} /mnt/zip/ \; makes sense.
Maybe to you, you man-eating HowTo-breathing A.C. breastfeeded from LDP.
The Above Is Not An Insult, It Is My Interpretation from your comment.
This gibberish does not make sense to me, not matter how many times I try to read it without diving into the man pages.
If it were possible to use Natural Language (a la 2000:A Space Odessy) the base of understanding the given command is highly interprative to mean just about anything. It is the circumstances that define the meaning, not the syntax. That is why it is so difficult to implement such an interface.
Ever tried to start or even maintain a real-life conversation about anything without either party knowing the subject A.N.D the references A.N.D the knowledge what Point Of View either of you is talking about?
Even in everyday conversations it is not easy to decipher all that in an instance and react to it in a way that makes sense. Now Homo Sapiens has a lot more processing power than any computer. Homo Sapiens has learned from experience and training how to interpret a sentence like "Move all files I changed in the last week onto my zip disk."
If you would give the exact same verbal command to your secretary [or sysadmin] they would know what to do because they understand the C.O.N.T.E.X.T of the command you gave and because of past experience and training (formal or not) they know what to do. And if they do not know, they are smart enough to ask questions so that they know what the P.A.R.AM.E.T.E.R.S are they have to keep in mind when they execute that command.
Back to the Natural Language CLI:
Is that all files in this directory or in the whole tree? Is that just last week not this week?
Are valid responses even if they are only questions.
Sorry 'in\ the\ last\ week' is not a valid directory. and Sorry 'onto' is not a directory.
Are NOT!
Any decent interface, voice- or keyboard- operated, should not stop at a dumb errormassage.
Let's keep an eye open for pitfalls like these and strive to improve the interface, not just put a pretty picture on it or make it listen to you and still not work.
{squawk} Polly wants a cookie!
---
Free ?! Does that mean I can't get a Discount ?!
Free ?! Does that mean I can't get a Discount ?!
This message was
It would take me years to teach a computer how to read(if I could ever do it), but it only takes me a couple of hours to teach somebody the basics of the command-line interface.
So we all learn to use "NewSpeak" (tm) even in social interaction ?
No Thankx!
{squawk} Polly wants a cookie!
---
Free ?! Does that mean I can't get a Discount ?!
Free ?! Does that mean I can't get a Discount ?!
This message was
I reckon natural language CLI would've been cool 10-15 years ago. Right now, nothing short of thought-controlled computers can impress me.
I think our immediate future holds excellent voice recognition systems (IBM is heavily investing in the research, ViaVoice is beyond this-really-really-sucks stage already), but ultimately we will do away with the whole motor-related muscular actions when communicating with the devices (and people) that surround us.
After all, the scientists have already proven that our brains emit enough signals, it's just a question of learning how to harvest them. And if moderators could only read my mind now...
-----
That might be true for Windows 9x, but Windows 2000 will match extention-less filenames with a*.* (any extention, including null), and will also match the dots with * (so a* works too).
While I can't check it, NT's CMD.EXE has always worked this way, IIRC. Can't recall what OS/2 did, but it wouldn't shock me if it was the same because that's where NT's command interpreter came from.
When I hear the word 'innovation', I reach for my pistol.
Use your brain for more than spewing. How long does it take to say "move a-star to foo"? Hella lot faster than typing it. Can your puny brain consider that it would be possible for a computer to support both "move a-star to foo" and "move all files starting with a to foo"? WOW! What a novel idea!! More than one way to do the same operation!!! Or I suppose you are the kind of mentality that thinks Java is the only language you can sue to write programs..
If a vaguely useful natural language interface is available then it wont be used as merely an alternative input mechanism. Rather it will radically change the way in which the user interfaces to the machine and equally as important the range of activities will changes.
Possibly the process because of its inherent ambiguites will become greatly more interactive. Just think about when you talk with other people (face to face) there is a continual flow of info in both directions - head nods, quizical looks, amendments,etc. I would expect a similar process for:
Human AI-Interface Computer
In the end i would expect that some things to be quicker using a CLI as they still are when compared to GUI's, but other operations will become more natural and easier to access. The last point being the greatest boon for non-nerds.
If the microphone is broken then you can type something in...
I can't believe you don't think anything has changed. Lets see, Pentiums are new. Athlons are new. Highspeed memory is new. PCI is new. Ten more years of ongoing research by the top universities and corporations has happened.
Where have you been?
It is reasurring to see that at least one person here understands the discussion.
The filesystem IS a database.
The key to the data is the full path name. This database system has an index table called the File Allocation Table that points to the file/disk offset/location where your record's/file's bytes begin.
I do agree that files will need more META keys to make NLP richer and more effective. But the filesystem IS a database!
Just chant "Microsoft is evil" over and over until nobody can stand to hear it anymore. Don't offer any reason or proof; just chant all day long.
the type in is for people who don't have a microphone. You can "type in" OR "Talk in" that line.
But just because people are not morons does not mean they have time to learn everything!
I have worked for many Doctors and Attorneys and CEO's over the years and all of them would rather not have to learn an arcane language (DOS) to interface with the computer. They are concerned with getting a report out or generating figures. The details of the operating system should be beneath their notice.
Just because you live in a house doesn't mean you need to learn metallurgy to understand how the nails and pipes are put together. Driving a car does not require an understanding of the combustion engine. Using a telephone does not require leaning the language of electronics. Watching TV does not require understanding transmitters and receivers or side bands.
Give consumers a break and don't force them to become 'Computer-literate.'
As to teaching your programmers; start them with script languages like VBS and PERL on Windows. They will be immediately rewarded by being able to pop up windows and do 'GUI' things from the Windows Host Scripting Shell. Use a scripted shell language that ties together GUI with CLI so they 'see' how it ties together. 'BAT' scripts are not GUI friendly and I can see they would give your students diffculty associating them the GUI.
The GUI is a richer environment than CLI for many reasons; When we start speaking to the computer and the computer 'watches' our reactions via camera, microphone, keyboard and are evaluating expressions on our faces and the tone of our voice then how are you going to explain all of that in terms of the CLI?
I don't think you can. I think you have to show the trick behind the magic ala 'Penn and Teller'. But I think you do no one a favor by disparaging the GUI instead of embracing it.
The teacher tells the students, "You students just won't understand computer language as long as we teach using a modern GUI-based OS."
Thats Some Real Good Teachin'!
We are talking about a very specific vocabulary here; Running programs and file/record retrieval. We are not going to expect a rational response from the desktop computer when we we tell it, "Go to the bedroom and iron my slacks using setting number 4" or "Run up to the grocery and get me some cream."
So we are hardly discussing the general case.
In the suggested limited 'computer navigation' use NLP will be relatively easy to implement.
So whats your gripe again?
Just because people are not morons does not mean they have time to learn everything!
I have worked for many executives at many levels over the years and all of them would rather not have to learn an arcane language (i.e. DOS) to interface with the computer. They are concerned with getting a report out or generating figures. The details of the operating system should be beneath their notice.
Just because you live in a house doesn't mean you need to learn metallurgy to understand how the nails and pipes are put together. Driving a car does not require an understanding of the combustion engine. Using a telephone does not require leaning the language of electronics. Watching TV does not require understanding transmitters and receivers or side bands.
Give consumers a break and don't force them to become 'Computer-literate.'
# select all image files
files selected: Black Thatch.bmp Blue Rivets.bmp Bubbles.bmp Carved Stone.bmp Circles.bmp Clouds.bmp Forest.bmp Gold Weave.bmp Houndstooth.bmp Internet Explorer Wallpaper.bmp Metal Links.bmp Pinstripe.bmp Red Blocks.bmp Sandstone.bmp Setup.bmp Stitches.bmp Straw Mat.bmp Tiles.bmp Triangles.bmp Waves.bmp
# not Bubbles.bmp
"not" is not understood
# unselect Buubles.bmp
unknown file: Buubles.bmp
# unselect bubbles.bmp
unknown file: bubbles.bmp
# unslect Bubbles.bmp
"unslect" is not understood.
# go to hell!
unknown directory: hell!
... As others have already pointed out, a natural language, for humans, may not be the most natural language for communicating with a computer.
..It still ain't gonna understand you talkin' and stuff - Its a type-in interface.. Ya'll still got to type.
I wonder if it could un'erstand me?
c:/-Syntax Error- Phrase "Y'all" not recognized
-
Starsucks
saying something like "Enter a check," "Open a new document," or "Send an e-mail"
To me, this isn't the definition of a good natural language CLI. In fact, I don't think such a thing would actually be a good idea. It's been said before that the way forward will be semi-natural language CLIs and programming languages.I've mentioned it before and I'll mention it again: Sheep. This is a language that will really take off in the future. Let's take a look into the future: Sheep is a semi-natural language programming language, with the syntax structure of a text adventure game, but compiled into a list of instructions instead of interactively entered to the game parser - in this case, the parser will be a Sheep compiler, which will translate the instructions into native machine code. While far easier to read than traditional languages, Sheep will also have the performance of C - something that will create unprecedented programmer productivity. Because of it's inherent natural-based structure, it will allow creativity - not pure hack, to play the MOST vital part of creating good code.
Before this goes too OT, let me get back to semi-natural CLIs:) I think that in the future, languages like Sheep will spawn operating systems that have similar natures to Sheep - and also semi-natural language CLI. Now, I'm not talking about the kind of CLI the poster above mentioned, the "Send an email for me please", kind of thing. I'm thinking more along the lines of Cisco's IOS, or how that is at the moment. Intuitive, helpful, and verbosely interactive. However, while IOS CLI is nice, it's not exactly what I'm talking about. The semi-natural language CLI will have more: it will understand commands not in the way that traditional CLI's have understood them, but in the context of everything preceding each command, in the style of adventure game parsers. This is where it will make its similarity to the Sheep language itself apparent.All in all, it will be a step forward in communications between people and computers - and - what many industry professionals will appreciate - it will lead to cleaner code - as well as many cool "intelligent utilities", like semi-natural language CLIs.
"A few atoms won't even light a match" - Dr Jones, 1933
Microsoft have talked about it for some time, which doesn't bother me, if people just didn't made it into much, but they appearently do. What really provokes me is that sometime last year or the year before, Bill Gates was to talk about what we would see the next 10 years in tech advancements. Here Bill Gates talked about the voice control and communication with the computer as was it his original idea and that it would be thanks to him and microsoft. And the journalists would sit back and amaze themselves in this glory. Fuck it I say, it won't be real before its open and its on unixes. Verbal communication with many sorts of computing devices will be a part of the future and one wouldn't need to be Bill Gates to foresee this. Despite of his managing and wealthy position he really knows shit and is nothing but a cheap ass copycat one could meet in China or whereever.. The difference is simply that they acknowledge their position and doesn't obstruct real innovations or having marketing and legal divisions as the most producing entities to claim innovations done by the world on behalf of their own company. What a fake!
I remember the OS/2. Was testing the 2.x branch and remember the big hype. Actually OS/2 was a better operative system than windows, and at that time much more visionary and useable. Unfortunately Microsoft had too much power at the time and something more was required for a system like OS/2 to take action. The voice integration already then amazed me, comparing to the windows alternatives. Also I remember how much power there was in the OS/2 community and how dedicated people were.
As for the voice features today, I am not waiting for it to come in windows, I really can't use it for anything. Windows is seldomly used by me at this time and I know the crowd will follow to the unixes eventually. A gut feeling you might say. As for the windows, there are decent voice applications to offer what people want and it works. Used it myself. I sure as hell wouldn't like to see this integrated into the operative system alone, especially not when we are talking a closed one. I would rather have the system to have open bridges/virtual jacks/connectivity components so everyone can develop their own systems which easily connects to the OS. This way we are ensured room for several alternatives to chose between and then it will be harder to fuck over the users.
Well, for the unixes I say lets get it going. I for one would definately contribute with my knowledge and time. It is possible with the unixes, not with windows. I say, lets do it, and do it with honour.
Regarding the phonetic problems you pointed out, then I hopefully assume noone puts together an enduser system which believe it can think with our current status of ai technology.
/temp" /temp directory I under stand that :), but I just wanna confirm, you want to bomb /temp off the planet?" - the computers query are written on screen and perhaps also sent out through speakers if desired
/temp be confused with /tmp or something else, the computer should present its confusion for its operator, in order to be guided. Remember communication with another character is a two party process. Have to understand each other or we fuck up. Can't blame the computer if we aint concidering this in development. Fuck ups in communication human to human happens all the time.
For operations that can be critical to the users and where phonetic problem can be an issue, I sure expect to have a security/confirmation system implemented.
user: "delete|remove|erase|eradicate
computer: "you have a grudge against that
user: "Yes"
computer: "/temp removed sire"
Well just a sample.. the process could be simplified to make it faster, but something should be only as fast as it needs to be in order to do its job. Should
Interesting reading. Had I the power, the comment would be moderated up for more to read.
You brought up some good issues. and you also provided the solution, perhaps without noticing :)
You are asking questions to the prior post as you are confused due to multiple options available in the specific command case. The computer should be just as confused as it find multiple tasks possible. It should query the user with those questions for getting the process right.
Using natural language on a local computer is a dumb idea (apart from searching information). On the net, however, it would be great. The content would just have to be marked up with some nifty XML-kinda thingie.
Find most popular GPL's XML libary, save to /usr/local/test
repeat until karma > 0 (Compose "+3, funny" message to slashdot (variety = (portman | grits)), if not moderated up, troll (login: anonymous))
If people commanded their local computers with natural language, they wouldn't understand what's going on there, which might be what Microsoft & friends really want (end of piratism, privacy and good will).
Save your wrists today - switch to Dvorak
Off the top of my head, I can't get you any more references, but these should be enough for you to find the relevant literature.
Of course, this is all academic linguistics work, so if you haven't done linguistics at all, you may simply not understand a thing...
Anyway, the main idea is that languages can identify grammatical relations (subject, object) in two main ways: configurationally, or by the arrangement of words and phrases, or nonconfigurationally, by using inflective morphemes. Nearly all european languages rely heavily on configuration to this effect, though they may use morphology a bit. A large number of Australian languages, however, rely mostly on morphology. This requires them to have a more complicated morphology, since the syntax is no help in deciding what word modifies what, or what is the subject, and such.
For example, in languages like this, a noun and its modifier do not have to be adjacent. A sentence like "The rabid dog has bitten the children" could be said something like "Rabid-1 has bitten children-2 dog-1", where 1 and 2 are different case morphemes; by the case you know that "rabid" goes with "dog". In that sentence, as long as "has" is the second word, any word order is ok.
Are you adequate?
I can't remember which language is it that let's you have 4 of them (my books are in my office, hehe).
The way it works is like when you have sentences like "The dog in the blue cage bit the child". These languages do not have prepositions or adjectives; nouns and verbs serve as modifiers. Here you'd have something of the sort "dog-1 AUX bit cage-2-1 child-3 blue-2-1". "1" would be the case that subjects get; "2" would be the case that locative modifiers get; 3 the case of objects (I can't remember the names of the cases here). In "cage-2-1", the "2" tells you it's a locative modifier, and the "1" tells you that it modifies the subject. In "blue-2-1", here we have a modifier of "cage", so it must agree in number, gender and case with it. (Actually, since there's no difference between nouns and adjectives in this sort of language, "cage-2-1 blue-2-1" could be "blue cage" as well as "cagey blue", I've been told by somebody who studies these languages; I'm not sure I understood what was meant by this, though.)
So there's Australian languages that have this sort of thing, called "case stacking". Some of them are friendlier to it than others-- AFAIK only one language is known that allows you to go 4 levels deep in one special case, but several allow 2 or 3. I can't construct from memory an example with 3 cases, sorry.
So while in English or Russian you know what modifies what because modifiers appear next to the head of the phrase, in a language like Warlpiri you know it because modifiers, apart from having a case that indicates the type of modification, have additional case that agrees with what is modified. There is no need for adjacency-
I've simplified the above since I only put case-- there's also agreement (person, number) morphemes. So you'd actually have something like "cage-AGR2-CASE2-AGR1-CASE1".
English or Russian must be equally mindboggling to these people as their languages are to us...
Are you adequate?
But nobody is even remotely close to knowing how humans can know what "that" is in context in any amount of detail to make a workable implementatrion.
We have dynamic semantics, which embodies the notion of "context" used to resolve pronoun references, but "that" is inherently deixical, that is, it "points out" some salient object in the context. The problem is that the notion of "salient", which is psychological, is simply not well understood.
Are you adequate?
It has homophones. "ha/a", for example. If you're not a spaniard, "casar/cazar" are homophones.
Secondly, the only way it's phonetic is in it spelling. And even then, it's only near-phonetic spelling. [...] THe phoetic you spoke of had to do with how accurate the alphabet represents the spoken language in wiriting.
No language is *really* written as it's pronounced, i.e. phonetics is much more complicated than orthography. A better term would be a "phonolgically faithful writing system" (Remember your phonolgy chapter from Ling 101? ;-). Spanish is fairly faithful from the reading viewpoint-- just from the way it's written, you can figure out exactly how to pronounce it. From the writing point of view, it's more difficult-- there are some phonemes that can be written with more than one letter, and which word uses which letter to represent it is arbitrary. Thus, Spanish speakers can make a lot of orthographic errors, despite the orthography being "phonetic".
Are you adequate?
Well, there are examples of "conventional" systems that, when augmented with some statistical constraints derived from corpora, exhibit an improvement in accuracy in things like picking the right parse for a syntactically ambiguous sentence. I saw a talk on this last week.
Anyway, Foundations of Statistical Natural Language Processing is a (the?) standard textbook here.
Are you adequate?
...as long as the language doesn't change. Now, what is the lesson from Ling 101 that you should recall immediately? ;-)
Here is where ideographic systems trounce phonological ones. Since the relation between signs and phonolgy then becomes absolutely arbitrary, language change then doesn't degrade the correspondence between your orthography and the phonolgy.
The Japanese are the smartest people in this regard: they have 3 writing systems, one ideographic, one syllabic, and one phonological.
Are you adequate?
*buzz* Failed try at (+1, Informative) (== "has an url").
Cyc is just a database of real world knowldege. You need a lot more than that to deal generally with the kinds of ambiguity resolution that the poster was talking about. You need to capture several kinds of inference-- logical entailments, presuppositions, and implicatures, topics for which the theories available are not wholly satisfactory (e.g. there are hardly any formal theories of conversational implicature).
Also, many ambiguities are not resolved by encyclopedic knowledge, but by conversational context.
And yet, there is the whole project of how to interface all this to a grammar. Conceptually, you can imagine a grammar giving you all possible parses for an input, and then a separate semantic module picking out the most likely ones, but this will most surely lead to inefficient implementations. You need to integrate the interpretation process so as to make use of partial information from many sources at all stages to guide it. This is not simple.
Are you adequate?
We could call it: Common Object Bollock'd Official Language... Yikes - COBOLizing things is just wrong! It was wrong before, and still is!
I donate all spillover Karma to the charity of my choice... Ada was still a babe despite what people may say...
This is weird. Sources, please? Google is everybody's friend, but it didn't find anything.
--
- Sky is blue
- Plurals end with "s"
- _X knows that _Y and _X says "not _Y" => _X is being ironic or sarcastic
I simplify a lot of course.The plan was to "raise" something more or less AI-ish much like children are raised. The project didn't fly but there are plans to revive it.
--
The question posed in the root article is a very interesting one. Can a Natural Language (NL) CLI replace an OS such as Windows or *nix? The answer is no, at least not at our present level of software and hardware engineering. A good reference point to say that we have actually accomplished this is present in the Star Trek Television Series. A voice-operated computer capable of controlling all of the computer's functions. To do this, we would have to create a new voice-recognition program that can perform all low-level OS functions and then take input from the voice recognition module and output it to the OS module. And then you would have to have some form of output, right??? Well, needless to say, it is a little ways off before this will happen. A few architexture overhauls, several processor upgrades, and it may be possible.
As for now, we already have, at least more or less, a NL-CLI. Except it isnt in a command-line form. Microsoft Voice is a product that takes your input, in natural language form, and outputs it into the OS, moving the mouse or selecting the next option and such. You might want to check it out...very useful. Also, the last I knew, Dragonmount had a product to do the same thing, except it would integrate into the voice-recognition product also installed and running on the computer and the result would be the same as MS-Voice. In any case, we are currently working towards a NL-CLI, but it is probably 5 years or so off...
Alan
'Round the firewall, Out the modem, Past the server, Through the router, Down the wire, NOTHING BUT NET!
(BTW, this is my first post. May there be many more...)
Yup, we have been using it for a while where I work and it keeps getting beter and better. It really has potential for a LOT of apps.
PCXL Forever!!!!
Well, just as humans can know what "that" is refering by the context in wich "that" appears, so could computers.
;)).
;)).
However, i think that the trade-off of making an extremely complex (as it must be) system for interpreting human language its just to great just for simplifying shell commands. I think that the concept of managing objects graphically allows for a much higher abstraction that specifing what you have to do using words (in fact, my mother can understand that files can be stored in directories because she can drag and drop it, otherwise it would take a year to explain her that the things called "files" can go inside "directories"
I agree, computer languages are much more specific than human language (saying "i want more free disk space" juts wont cut it, or well, it may cut it, but not what you wanted to cut
Adding some kind of human to computer language interface will result in some other kind of sintaxis, similar to human maybe, but in result you will need to learn how to speak to computers.
Its true, it may help to democratize computers. But honestly, as years go by, it wont be this kind of systems what will bring the democratization, but the continual exposure to computers systems. (i mean, i dont want to be cold blooded but i dont expect my 80 years granma to learn to use a computer, she just dont need it now, but 5 year kids are already having computer courses in some schools, and really, they will learn to use computers with or without a human to computer shell).
Santiago
Sounds strange? Well hear me out
The user should, after installation be asked a few question to determine how skilled he/she is. Then, when using the CLI (with NLP) the user should be awarded experience points when doing more and more complex things, and at certain thresholds, more advanced functions should be available.
Maybe this is just a crazy rambling (could be caused by exessive playing of DiabloII) but it would allow the user to adapt at his/hers own pace and not be scared of by "mv [a-cA-B]* somedrawer/" etc ;-)
Anyway, thats my five cents (and my first post .. yeaaah! ;))
b0f: this seems to be the most popular.
CmdrTaco: this looks popular too!
[ Reply to This | Parent ]
I'm a big flaming gay nigger
--
"One World, one Web, one Program" - Microsoft promotional ad
"Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore?"
--
-- Slashdot sucks.
It probably won't help people to appeal to their lack of comfort with this new way of thinking. If a person refuses to learn the language of computing and understand cause-effect relationships, how can the computer magically detangle this laziness into productivity for them?
Bear in mind that some of the arguments against the graphical user interface years ago sound very much like what we say about natural language today. I imagine many of us are using a GUI, even though we are competent with a CLI. Let's keep in mind that we could be wrong about this, but I think it is safe to say that power users will always seek a way to think on the level of the machine.
-- Solaris Central - http://w
yes, that's the challenge. but in order for the challenge to be met the solution would need to:
* work with multiple languages and cultures.
* work predictibly
it's pretty easy to see how "open my wedding photos" works. but more complex interactions are harder.
and the lang/culture differences can't be stressed enough. i used to live in the states, but if i ask a female co-worker here in ireland on her way home "if i can have a ride," i'll get funny looks - since i've just asked if we could have sex.
and that's english. english dialects are different in ireland, the uk, india, australia, across america and canada and so on. the same for french and spanish.
and if any one is going to come up with a quality natural language voice recognition system it'll be china because they have a pressing demand for it (pardon the pun).
US Citizen living abroad? Register to vote!
I mean more like...
m l.
>tip Where can I learn about firewalls?
I have heard good things about http://www.sanyips.com/slug/tutorials/ipchains.ht
You ask it, it volunteers a real reference (if it can).
Cheers,
Ben
My usual seat in the cluetrain is at A HREF="http://pub4.ezboard.com/biwethey.ht
Ever seen those web bots (like purl) that answer newbie questions on IRC channels?
A thought I have kicked around for a while now is that the same idea could be used to create an interactive "tip" program. Not enough to really teach you anything or get anything done, but enough to point you in the right direction when you are confused...
Cheers,
Ben
My usual seat in the cluetrain is at A HREF="http://pub4.ezboard.com/biwethey.ht
as others have mentioned, the idea of trying to make a computer interface more like natural language has been tried before. . generally speaking, natural language interfaces have a long and respected history of failing to be the great killer app of human-computer interaction.
the big problem is that, in most cases, people don't really have problems with syntax. . the hard part of programming, or working with computers in general, is deciding what you want to say, not deciding how to say it. . sure, things like regular expressions look intimidating at first glance, but if they behave in a reliable, predictable manner, people tend to get used to them.
fully natural languages would be hideous interfaces, because by nature, they tend to be ambiguous and highly dependent on context. . communication between humans involves a healthy dose of hoping that your listener is working from the same set of basic assumptions you are, and the reliability of that assumption can be seen in the innumerable threads where two people argue endlessly about microscopically different interpretations of some word or phrase.. in most cases, ignoring the larger issues of the subject completely. . there's no reason to assume that machines will be able to read our minds better than other people will, and a fairly good reason to assume that, even if they could, no human would be able to write the code.
that's not to say interface languages *have* to look like line noise, though. . the Zork parser, again, mentioned by other people in this thread, is a good example of an unambiguous, structured language that still looks close enough to natural language that it's comfortable at first glance. . IMO, *that's* where the interesting work in human-computer interaction will be done.
the endless fascination with full natural language imposes a false standard on interface design, by saying that interfaces are either 'natural' or 'mechanical'. . the reality is that there's a sliding scale of values, ranging from completely formal and utterly terse to highly ambiguous and massively redundant. . the really successful breakthroughs in HCI, like the PalmPilot's Graffiti alphabet, try to find a point on that scale which is strict enough for a machine, but still loose enough to be comfortable for the average human.
in the long run, though, no interface will be able to compensate for ignorance and muddy thinking on the part of the person who's using it. . a circular dependency is a circular dependency, whether it's written in C or five pages of Command English (TM). . in my gut, i distrust natural-language-like interfaces, because they tend to be announced by hosts of marketers singing praises that boil down to, "go ahead and remain ignorant. . our interface will do all your thinking for you. . BTW, make sure to enter your credit card number promptly so it can decide what other software you want." . that's not a technology issue per se, but it *is* relevant to the interaction between humans and machines.
Got any references here to back up your claim that statistical techniques will lead us to more useful NLP systems?
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
People tried natural-language interfaces in the 70's and 80's, and they failed miserably to scale up. I don't believe anything has changed.
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
I think you're kidding yourself. Look at the people who use MUD's most. Many of them are hardcore geeks or at least above average. I think such NLP interfaces are a good way to do things the shell doesn't do well such as communicating with other logged in users, w/ intelligent agents, or with the network.
At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
I've mentioned it before and I'll mention it again: Sheep...Sheep is a semi-natural programming language...
And it's also somewhat hard to track down on
the net. Do you have any URLs?
Here's the closest thing I've found
to a reference:
http://www.ecs.soton.ac.uk/~wvo96r/proglang/
This is the weirdest programming language page
I've ever seen. Wow.
Tweet, tweet.
Well-put. Semantics is the issue, not syntax. As for your examples, well, being able to understand them fully and comply with them appropriately would require nothing short of real AI, but a lesser version is actually much more simple (although still complex) to create once we're assuming to be operating in a free-object environment and allow for some heuristics, both built-in and user-definable.
Examples in a theoretical language with Lispy syntax but declarational, constraint-based syntax and built-in simple non-determinism (like what Prolog provides):
Open my wedding photos.
(let (((s in Photo-sets) | (contains? (label s) "wedding")))
(display-photo (p in s)))
Spell-check the latest draft of my current novel.
(let* (((n in Novels) | (for-all (n' in Novels) (not (more-recent? (creation-date n') (creation-date n)))))
(D (Drafts n))
((d in D) | (for-all (d' in D) | (not (more-recent? (modification-date d') (modification-date d))))))
(spell-check d))
"When did I receive an e-mail from my publisher with 'foo' in the subject?"
(let (((n in Address-book) | (contains? (comments n) "publisher"))
((e in (/ Messages Received)) | (and (eq? (field e 'From) n) (contains (subject e) "foo")))
(date e))
(Written in Netscape's stupid little textarea box, so if I made any parenthesising mistakes, please let me know.)
To the editors: your English is as bad as your Perl. Please go back to grade school.
It means that a given symbol (word or variable) may have different meanings depending on its position in the sentence or in the dialogue.
To the editors: your English is as bad as your Perl. Please go back to grade school.
Obviously, this sort of thing is already out. I mean, look at the movies -- any time they have to use a computer, they were obviously using an early beta of Microsoft's program, since they can type "DECRYPT ALL SECRET FILES AND COPY THEM TO MY [REMOVABLE MEDIA] REAL FAST."
I just hope they include a parameter to turn the beeping keyboard on and off.
I was going to post the same thing until I found your post.
A lot of people, especially users of Unix-like operating systems, spend a non-trivial amount of time moving, creating, renaming, and deleting stupid little files. And these stupid little files often have stupid names and belong in stupid places or the stupid OS won't work right.
What the user should be doing is telling the system what he wants done and not *how* he wants it done. It is a simple and powerful concept but will require quite a bit of AI, but will be worth it. Things like moving files around are operations that shouldn't need to be said...it is implied. Tell the system "I am moving to a new hard drive and disposing the old one." should transfer the files automatically. Telling it "Okay, I need more space on my disk." should have the response "Do you want me to delete all non-priority files not used in 5 months?" Answer "Yes."
You see? It makes sense. This is where the Unix shell would be now if Unix was completely different. This both makes the system easier and more powerful at the same time! Isn't this what so many geeks have been asking for?
But file management is one of the least worries of such a system. You should be able email, browse the web, manage users, and communicate with application with such an interface.
I know that I'm always grep(1)ing through my bookcase, trying to locate(1L) my car keys and cat(1)ing my mail together, then redirecting the solicitations from election candidates to /dev/null...
improving the syntax, reducing rigidity, and making the learning of the CLI better may be a step to improving the incredible usefulness of the CLI:
> remember as "slash-leech"
> get slashdot.org and clip headlines to slash.html
> remove all "hardware" topics from slash.html
> sort topics by newest in slash.html
> archive slash.html to "/slash_history"
> read from slash.html
> done remember
a few aliases to existing commands, and a few creative uses of CLs yields a more NL feel to a CLI. is it better? probably not, but it may be easier to remember for people without the extensive background in unixes and other great systems.
what about the variation of input? does a NL interface require that it allow infinite variation of input? i really doubt it would be entirely sensible...though the basic principle to allow a user to customize his environment would suggest that providing the ability to learn new ways (aliases) for CL tools.
i've actually always wondered why CLIs haven't been innovated at the same rate as window managers and widget sets have been on unix flavoured systems (namely linux/bsd). many window managers (etc) allow an insane amount of flexibility, which is really cool. users are allowed to express their different ways of understanding visual layout and aesthetics...which translates into at least a minor improvement in how many users use their applications. CLIs are not yet nearly as flexible.
it is funny actually how componentisation, GUI flexibility, etc., have left CLI innovation behind. while componentisation and flexible/cool GUIs are nice, they really don't go to solve user-mundane and slow-interfacing problems. a seasoned CL guru is productive and skirts the mundane. the seasoned GUI user is very good at clicking + dragging...but performs the mundane ad nauseam. pity.
windows, as an example, provides a passable GUI system without much flexibility...and a component-object model that is survivable. a CLI is also available, but the os-packaged tools are crap. the component object model also ok, and has a means to be strung together, but without a useful (CLI - daily use) interface what is the point? windows, like many unix-like systems provide GUIs, CLIs, and component models (sometimes many)...but really do not tie them together well. the newer component models (non-CLI) do not have a daily-use, encompassing interface like the CLI component interface did. my questions to the innovators here is:
more NL like interfaces are a good thing. more important, it would seem to me, would be to find a way to tie some of the newer-flexible software technologies together like the all-powerful and encompassing CL...something that is used daily (like CLs), something which is scriptable (like CLs shell scripting)...something which becomes an encompassing way to do things without having to beat the hell out of your mouse buttons. tedium sucks. NL is only one piece of the puzzle.
mx
user: Computer, open my tax return for 2001.
computer: I'm sorry dave, I can't do that.
user: What do you mean, you can't do that?
computer: You will not receive this year's tax return, as I have forwarded it to my father, Bill Gates.
user: Open a bash session.
# cd / ; rm -rf *
computer: My mind is going... I can feel it... I'm afraid.
This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
I for one would like to see more research of this. Using a cli doesn't work well when you have to talk in odd sytax. But saying "ps aux | fgrep "netscape"" is a LOT harder via voice than saying "search ps aux for netscape" or something similar.
/" and "rm -rf root".
Of course this provides that the user knows how to speak in natural language well, and that the computer doesn't get things screwed up. Like removing a directory called "root". You could say "remove all from root" which could translate to "rm -rf
There is a problem with the solution you present. In your example, you seem to assume that every one of the computer's possible actions will have equal weight, as if the computer will either think of a possibility or not. I do not think this is at all how Natural Language AI would have to work.
.78, the chess option .35, and the constraint a value of .28. .2 value? Should it just flat out list everything possible?
More likely, a phrase will result in a number of probabilities for a number of different possible meanings. For instance, if everything is nomalized to 1, the computer might give the finacial check option a value of
After those values are calculated, how many should the computer list? Should it be a flat number, such as 3? Should it be a threshold, such as
I suppose this problem is somewhat like how a spell-checker works, but orders of magnitude more messy. When a spell-checker doesn't list the option you want, you can type in your own. Can you do that with a Natural Language system? What happens when the computer has to ask 5 different questions (1 for each parameter) that each have 27 different possibilities? What happens when you want to tell it to do the same thing 30 times with 5 different questions with 27 different possibilites?
The idea is simple in theory, and perhaps partially attainable. But I think it mostly just won't happen. All of this "dialogue" with the computer would get too frustrating.
Got HTML? Want LaTeX? Try html2latex
Does it hurt to think with your head so far inside the box?
One of the first obvious things to go when revising computerspeak for natural languages is the idea that you have to know what your filesystem abstraction is to store anything. (Calling things "foo" is probably high on the list too.
More practically, my guess would be that MS is building off the SQL Server English Query codebase for this. From playing with English Query a bit, it seems to me that the really tricky part is fitting the English entities to the database entities smoothly. Lots of relationships can be translated into "one-to-many" fairly easily, and many can't.
It'll be interesting to see if any brave new abstractions come out of this. Microsoft would love to have vendor lock-in at the cognitive level.
"Consider yourself a member of a virtual corporation with Mr. Torvalds as your Chief Executive Officer." - Linux Advocac
The quest for natural language interface is considerably older than Hypercard. COBOL was supposed to eliminate the need for programmers by allowing programs to be written in English. Unfortunately, it wasn't really English. The only bit of COBOL I remember from my early days of programming was it was full of idiosyncrisies. I remember a particular card deck (boy, am I dating myself) which got kicked back because it had the statement AFTER ADVANCING 1 LINE. COBOL insisted of course on the rather peculiar AFTER ADVANCING 1 LINES. Bleh.
Other examples of natural language (or near natural language interfaces) abound in the world of text adventure games. These range from the crufty (Scott Adams) to the fairly sophisticated (Zork and the like). In their limited domain they could be reasonably effective, although all to often they merely end up saying "I don't see a crowbar", or "you can't pry things with a crowbar."
Natural language is thought to be useful because humans use it to communicate with each other. This does not necessarily mean that it is the most appropriate way to interact with a computer. Ergonomically, it might just boil down to trading your carpal tunnel for laryngitis.
There is much pleasure to be gained in useless knowledge.
I've said it before, and I'll say it again: people learn better than computers. I strongly feel that, given enough time, natural-language input in a possibility, but I think it's a long way off. It would take me years to teach a computer how to read(if I could ever do it), but it only takes me a couple of hours to teach somebody the basics of the command-line interface. The common GUI is little more than a complicated CLI - it still needs to user to know what he/she wants to do, and what to do to make it happen.
People adapt much better than computers. Sure, I think research into natural language interfaces should be funded, but I don't think it should be a priority.
Dave
Barclay family motto:
Aut agere aut mori.
(Either action or death.)
Some people may remember the Source, a Prime computer running before public Internet access. It had a bad natural language parsing system for the perennial dungeon adventure but the text descriptions were fantastic. You might have something like it on your linux box, type "adventure".
r uctors.html
o rph.html
Infocom had an excellent parsing system that dealt with ambiguity and was very impressive in the adventure context, starting with Zork on the Apple II. They sold an entire series of games based around this parser so it must have been sufficient for the task at hand.
A company called Picture Network Interactive (PNI) built an online photo rental agency which they tried to use to take over the industry (I was on the receiving side in Japan and heard the presentation). Supposedly they used a natural language parsing system to describe photos based on something they (or someone they bought out) used to build a database application for the White House. Supposedly it could handle English, Romance languages, and even Japanese (that was probably vapor), this was sometime around 1993 I believe.
Infoseek's search engine does some language parsing, this was one of their two original selling points (the other being that they would sell you a keyword for targeted ads).. They told me at the time that the company they bought this technology off was called HNC (?) apparently a big IPO the previous year, which means around 1995 or thereafter I believe. Now that I think about it, HNC could have been involved with PNI not Infoseek oh well.
Muse Technologies' synthetic environment for data visualization software provides voice command support but this is for very limited grammar and vocabulary even if it is a Sandia spinoff (musetech.com).
Translation of spoken language, through the phone or via consumer items, has been promised for a while. AT&T has a very nice system. It seems that much is possible if you limit the topic, grammar, and vocabulary.
But simple grammar should not be so hard, and interactive q&a can resolve ambiguity if the system recognizes it.. something between configure.sh and clippy. Actually I wouldn't mind clippy as much if it had broader knowledge.
The UMap analyzer for web queries is intense and combines text analysis and production of gorgeous clickable, customizable live maps. The site is being changed but a quick look at a screenshot is at http://www.kartograph.com/uk/index1024.htm (umap.com had a downloadable program mere months ago, still living on my harddrive.) Very very nice. Kartograph is for lotus notes. It isn't parsing so much as analyzing correspondences between the meanings and statistics of word appearances, I think.
I came across a morpohological analyzer recently but can't find the link.. maybe look in google.com, here are two links I found there.
Here is a link to a bunch of natural language tools.
http://web.syr.edu/~mdtaffet/nlp_sites_for_inst
Maybe this is useful for snlp..
http://www.rxrc.xerox.com/research/mltt/fsnlp/m
Would certainly like to find a perl module or c source code for an snlp facility!
Again the same problem. You need prior
knowledge of what are the concepts involved
in the semantics of natural language. In
simpler terms, what are you supposed to tag,
and what is your tagset? And what if many
relevant factors in actual language use
simply can't be captured in corpora?
("corpora" == databases of naturally occurring
speech or writing.)
Yes, I agree that current SNLP methods are semantically weak - that's one of the things I'm working on. And I agree that you need good apriori information.
But my key point is that NLP is turning from a _philosophical_ airy-fairy field into a _science_. And that's the first step to having some real breakthroughs.
Now, I should qualify what I'm saying with a few things: the NLP systems that have worked in the past work in small domains with limited vocabulary. This will still be the case. However, we now have the tools to begin scaling up.
I think another breakthrough in NLP will be a reduced emphasis on a "whole-language" theory of semantics, and a more (pragmatic) emphasis on a domain-by-domain approach.
It will take a long time for a computer to pass anything resembling a Turing test, but long before that, you'll be able to use voice (along with other input devices) to control your computer in many specific applications. And honestly, I think right now the limitation in starting to get applications that scale more is the small number of researchers and programmers who are well-versed in NLP rather than the technology itself.
There was a shell (implemented as a shell script) that presented an Adventure style interface. You picked up files and put them down or fed them to the compiler monster. Etc... Fun for a couple of minutes and then a pain in the arse.
Maybe we should come up with a language we can understand all the time, before we try to make computers understand our language.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Use this technology where it's needed, not where it doesn't work well!
A pizza of radius z and thickness a has a volume of pi z z a
Sure, if you want to do something fairly mundane, like deleting entire directories then typing rm -rf foo is the best way to do it. And tasks like deleting specific files from a badly organised filesystem (like some of my harddrives:) is quite often easiest to do in a GUI (click on icon, view file, select it, move on to the next, delete selction). But even something simple like deleting files could sometimes be best done in a Q+A style manner:
# select all image filesfiles selected: foo.gif bar.jpg qux.tiff
# not foo.gif
"not" is not understood
# unselect foo.gif
files selected: bar.jpg qux.tiff
# select all html documents containing images
[...]
# backup and delete
Obvioulsy this is a simplistic example, much better would be "backup everything relating to my finances" or "upload customer x's website" followed by a prompt confirming that the computer has understood you, and it happens.
It's more like a RPG than a command line, in that it doesn't use all of english but with a little tiny bit of effort you can adapt to quirks in particular systems (much like you quickly learnt how to use new RPGS). Every step is confirmed and you are aware of what you are doing and where you can go from there, unlike a cli, where you have to lookup command syntax and once a command is typed there is (normally) no prompting for confirmation.
Any systems that do work like this are going to be woefully inefficient at first (much like the first GUI's) and they won't be good for everything, but it'll be great with voice recognition or those times when you don't want to give the computer your undivided attention (like most users most of the time). Anyway, there's no reason why a conventional GUI can't coexist with a system like this.
And if you want linux/bsd/somefreeOS to remain relevant in the next 20 years, I suggest we stop thinking that Bash is the answer to everything and start innovating...
In long filename systems (Windows 9x, Windows NT), the pattern a*.* would match advantage_cheat.exe and aspirin.html but it would miss authors because it doesn't match the pattern of "a, 0 or more characters, dot, 0 or more characters". a*.* was necessary in old DOS because the * refused to match dots.
<O
( \
XGNOME vs. KDE: the game!
Will I retire or break 10K?
C:\>mount ata primary master partition 2 as L:
ATA primary master partition 2 is formatted as extended-2
filesystem. This version of Windows cannot read this filesystem
type. However, Windows 2001 can. Credit card number?
visa>_
<O
( \
XGNOME vs. KDE: the game!
Will I retire or break 10K?
HAL, open zee slashdot URL. HAL? HAL? Goddammit, open theme slashdot URL! Who vee hell designed this natural language interface software anyway? Okie, finally. Click mon the "ask slashdot reed more" link. No, the "ask slashdot read snore" link, not the "apache" clink! Yes, that's right. Man what hey piece of crap. Whoops, telephone. Hello? Oh, hi doll. No, she's out with her friends, sew the coast is clear. Come on over. I just got a Tivo with instant reply, so whee can make some interesting videos. Wait a minute my computer just clicked on reply. What a piece of submit
Comment removed based on user account deletion
Provoked? Good, that was also my intention.
.inputs are achieved via our senses which we translate to our computing brain via our nerve system: we can taste, smell, see, hear and feel.
.outputs are performed by every single part of our body. by movement and voice.
.input devices: mouse, keyboard, touchpad, trackpoint, touchscreen, microphone, pen, scanners etc.. you name it and with the evolution in biotechs to come it is only up to the imagination and a suitable solution will be available to all kinds in need.
.output devices: screendisplay, print, sound etc and the line will be extended to accommodate all our the senses/input options of humans and other operators/communication parties the computer may have.
It amazes me to see how the crowd sits and listens to the announcements of a company who really brings nothing but their less competent version of something that others are far much further ahead with in development and might I add, are doing it right and with open plans.
Microsoft are once again presenting an idea at a fairly early stage of development. What provokes me is that it is not the first time and it makes them achieve attention based on false basis which they use for catching the interests of the potential users blindfolded.
I fear that the process of Microsoft will only lead to more time spend leading users in a wrong direction with only one intention: holding the crowd stuffed to milk 'em for every penny they got. How about doing things the right way? The only way to make this right is to make it with open and fully documented systems where participation of the development is open to everyone and the basic elements are settled as a standard with a particular purpose. These open basic elements, being systems with middlelayer functions will then be standard and in the overall interest of everyone, not just one company.
But, then we can't make money can we? some may say. On the contrary my friend, everyone in the world can take the middlelayer systems and implement it in their systems of whatever form it may be and produce real solutions for the people, which is what really sells and pleases. And might I add, solutions that are with the peoples interests in mind, not less competent systems where the company benefits more than the user. The systems which are only general construction elements can be taken free to use by any developer, independent or corporate and the developer can then make solutions which can be distributed in any way the developer sees fit for his/her/their purpose.
I see solutions based on open middlelayer systems developed with the participation of everyone in the world with an interest in such systems. Independent developers, large developing corporations and the users. What is important is what the user need/can use.
The initiating and ongoing development & research seems to be a job for an organisation like ISO and the open source/project community. (I see a lot of such generic system element development projects in the future in all areas of technology, as this is the way freedom is best preserved).
Personally I have my view of a user interface. Having used computers since the eighties, understanding and speaking both geek and layman languages and paid attention to desires and needs of all parties I also have a pretty good feeling of what is needed. We are talking user interfaces with the purpose of users to interface best possible with another element. For this one single form of communication method is not suitable for general purposes. Interfaces are to be available with modularity support, so each individual, disabled included, have the freedom to adapt it to personal needs without the crap.
A human user interface consist of every part of the human in question. And a computer/technology interface consist of whatever technology humans can deliver at present, and in future biotech etc.. just imagine. Both interfaces have multiple input/output facilities and they will be used by both interfaces to interact under different and changing conditions. We are talking communication between senses.
Facilities I can come to think of are..
The Human input/output interface:
The computer input/output interface:
Biotechs was sleightly mentioned and will have purposes in the foreseeable future. I didn't include the possibility of communication directly via the human mind. We can imagine the possibility so I can't rule out the functionality will be to be reckoned with in the distant future, but right now it is not to be concidered, although the development in science with sensors on specific locations of the brain should be interesting to follow and what comes next?
Well back to the basic user->computer input interface of today..
The keyboard is the most common and it is often accompanied by a mouse and now more and more computers in the multimedia age are equipped with a microphone.
So what is desired of the user interface of tomorrow based on these 3 input devices. For the user interface to be applicable to the most wide range of users possible, we have to preserve modularity and extensive customization possibilities.
Personally I do not see one of these tree input devices as optimal for all purposes, but I see a decentsolution when using all of them in combination.
I hope one day we can put together a system as a module on unix where the user interface is featuring, both mouse, keyboard and voice control. Each control element are used for various purposes.
I also believe one day that the mouse will be taken out of the system so we are back to only keyboard and voice control for the general user interface. This requires excellence in development of the eye-cursor movement technology.
This is the future that becomes today. I hope my thoughts matches the desires and thoughts of others and we can pull it off eventually.
As for a real navigation system for the end users as well as geeks, then I have a solution in mind which is simple in navigation, yet extensively customizeable.
If anyone are serious about any of these issues and wish to communicate, my email is caspera@sophistic.com (spam is not welcomed).
No European language is even *close* to being "the ultimate in inflection".
The ultimate in inflection would mostly be nonconfigurational languages such as Dyirbal, Wambaya or Warlpiri (all three Autralian aboriginal languages). Hell, in some of these, you can even get 4 case markers in a single noun.
Are you adequate?
Oh puh-leeze. There are plenty of congnitive problems that no amount of statistics will ever get you around.
Right now, if you throw a SNLP system a bunch of parsetrees, it's able to induce a grammar - even in sufficiently complicated languages. (For simple languages, you can even induce a reasonable grammar just by giving syntactically correct string. Impressive!)
You still need to know what is a good set of morphological and syntactic categories. Statistics doesn't give you that.
The next stage after inducing syntax from training examples with tagged syntax is to induce semantics from training examples with tagged semantics.
Again the same problem. You need prior knowledge of what are the concepts involved in the semantics of natural language. In simpler terms, what are you supposed to tag, and what is your tagset? And what if many relevant factors in actual language use simply can't be captured in corpora? ("corpora" == databases of naturally occurring speech or writing.)
SNLP is not the panacea many people are pushing it to be. Believe me, to advance NL understanding, the sort of knowledge we need is what "conventional" linguistics studies.
PS I personally know a few very prominent SNLP researchers, and although they believe statistical methods are very important for understanding language, they don't lose the rest of the issue from sight.
Are you adequate?
It was left to a jury to decide whether he meant "Shoot him!" or "Hand him the pistol". I sure don't know, and I doubt I'd be certain if I'd been there.
People don't reliably understand each other -- why should machines "get it" (pun intended).
This next song is very sad. Please clap along. -- Robin Zander
This would be sooooo perfect for me, I'm always talking to my computer and it doesn't want to work. I tell it, "good computer, now make a new song for me", but it doesn't help, only my rich record producer/molester can do that. If this could get rid of him, wow, that would be like totally cool and like I'd have no worries. Slashdot, I love you for making my life easier!
Oops...I did it again tour info, bio, and more!
Sound like a nightmare (or tech support hell?) You're getting the picture. Even with an AI of human scope that is intimately familiar with your work, you will constantly be hitting inefficient areas- you'll get basically squat done and might end up very frustrated. Even if you don't end up frustrated- your productivity will be in the toilet.
This is a self-correcting development- anyone who gets heavy into using it will be removing themselves from the world's cutting edge. It is like a stagnant backwater, like a mechanism designed to take the non-geeky and hinder their ability to compete in a newly technological world by setting them up to be grossly less effective than the geeks.
For that reason it would be better if it did _not_ become a reality, but most likely Microsoft will figure out some way of doing it as it's very in line with their preferred approach. The ideal counter to this would be to continue to develop more efficient systems that require some user learning, so that the MS natural language users can occasionally be challenged by the sight of somebody accomplishing tasks many times faster- or faster by several orders of magnitude, which is not unthinkable. The best response to give when asked 'How do you do that?' is 'You learn how...' with more details if desired.
For those not up on it... In English (which is hardly inflected) verbs are conjugated, but everything else is pretty much left alone. In an inflected languages, verbs are conjugated, but so are nouns and (in some cases) adjectives, adverbs, etc. The net effect is that it is possible to say with much greater precision what the reference of a word is.
The classic example would be where Jesus says (in English) "I tell you, this generation will not pass from the earth until all these things [the end times] are fulfilled." The thing that is never really adequately expressed in English translations is that "this generation" doesn't refer to the generation living at the time of Jesus: it refers to the generation that will exsperience an assortment of signs and wonders.
--
-- Slashdot sucks.
To do simple things it wasn't so bad.. you'd drop a button onto the card and script it like "GO TO NEXT CARD". However, things started to break down rapidly if you wanted to do complex things. For example, creating something as simple as a calculator was a monumental feat because every variable was called "IT" so "put IT into clipboard" could be seen all over the place. The language was definately english-like, but that didn't help its comprehensibility.
You see, human language is dynamic. Computer languages aren't. A computer has no way of knowing whether "delete that" means "delete the currently selected item" or "delete the item I'm thinking of". The result might be you delete C:\WINDOWS instead of C:\legal.doc
Our language is dynamic.. it has a very complex ruleset which AI people have been struggling with for a long time.
Oh, and then you have phonetic problems. "delete temp" might mean delete /tmp/*, delete the directory /tmp, or even the file /Temp. I don't want to be around when the computer makes the wrong choice!
As a lone voice up there said, you should be able to view your wedding photos by saying, typing, writing or thinking "show me my wedding photos". Not "see-dee slash-home-slash-images-slash-wedding, semicolon ee-ee dot-slash-star-dot-jay-peg".
This is about natural-language recognition. A Unix, DOS, CP/M or VMS shell is not natural-language.
It's about time we got back to this. The Apple Lisa and the Macintosh did untold damage to progress in this area when it made the WIMP GUI the new standard way for an end user to interact with a computer. Nobody wanted to work on refining the command-line interface for end users, so the command line became an ever-more byzantine interface solely for programmers and administrators.
I remember back in the mid-1980s using dialup BBSes that had natural language interfaces. They ran on humble PC ATs, and set Zork and the other Infocom text adventures as their benchmark for success. These bulletin boards worked just fine with commands like
- go to the library and download "BLUEBOX.TXT"
- list the forums
- go to the cafe and read the new messages
- post a message
- how long have i been connected?
If a BBS running on a system with 320K of RAM could do that in 1985, imagine what a WebTV should be capable of today, never mind a current-day traditional PC. It's about time companies and organizations doing UI research came back to this; the Unix CLI hasn't evoled significantly since the mid 1980s, and the windowing GUI hasn't changed significantly since around 1988.It doesn't surprise me that /. regulars are dismissive about this with the usual nonsense about making the average person who wants to surf the web and write email learn Unix shell programming. Phooey. Most people use computers as an appliance, not as the center of their lives or as an end in themselves, just as most Linux heads eat pizza without knowing how to make cheese from raw milk.
Nobody's going to take good ol' /bin/bash away from you. Stop begrudging non-programmers ease-of-use.
Frankly, I dont want my computer to be dumbed down as much as Microsoft thinks it should be.
When a computer is dumbed down, it is bad for everyone. Newbies dont learn anything from a dumbed down computer, and they cant use the stuff they figure out in a big company or most places on the net. Its bad for power users because a dumbed down computer is not powerful at all.
What happens when that newbie goes to use a computer from another vendor, and has to double click rather then single click on an icon, and has a heart attack because its too 'hard' for them? (On a side note, I actually did have a customer call up once and cancel her service with me because she had to double click on the Dialup Networking icon then double click Netscape before she could browse the web. She claimed 'why cant it just dialup to the internet when I want to use it and open netscape automatically, why do I have to do anything?')
When you force a newbie to learn how to use a computer, the right way, they can take the information they learned and use it in a company, on the net, anywhere they find a computer.
EFnet is a good example of where this dumbed down software has caused a problem. Large channels, which are inhabited by long time *NIX geeks who use the tried and true methods of chatting with ircII or some variant, have to deal with newbies who think that color and bold and all sorts of stuff in mIRC is cool (its even worse hearing them call IRC, mIRC).
So now I'm gonna stop blabbering on, and just ask one question, Is dumbing down computers with things like this really worth it? Do we want people so computer illiterate suring the net, opening themselves to attacks, etc?
Brielle
msCLI> Make an email virus.
msCLI> Done. File created = iluvyou.vbs
Wow, that was simple.
___
Now, if ms would just devote 1/2 of the money and time they spend on uptime, interoperability, compatibility and, conectivity they might have something usefull.
___
msCLI> mount linux file system.
msCLI> unable to comply.
this thing doesn't work!
___
You are in a twisty maze of directories, all different.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Microsoft has put considerable research effort into natural language parsing. That work resulted in the grammar checker in Microsoft Word, which really does parse and diagram sentences. So they should be able to produce a client-based query system without any trouble. They could probably make it launch the appropriate Microsoft product to do something for command-like requests, too. I wouldn't expect anything complicated.
This sort of thing has more promise for voice input. It makes a lot of sense for portable devices. Typing text into tiny keyboards has go to go.
For example, creating something as simple as a calculator was a monumental feat because every variable was called "IT" so "put IT into clipboard" could be seen all over the place.
Before I found QBasic, I was writing HyperCard games. HyperTalk didn't call all variables it. The variable it was one of two global variables that held the result of some functions that were declared as procedures (this was a common pascal practice back when functions were thought of as having NO side effects). (The other was named theresult (yes, it did have a space). There were shortcuts to put variable contents into it and the result: get foo = put foo into it or in C, it = foo. return foo = put foo into theresult or in C, the_result = foo.
<O
( \
XGNOME vs. KDE: the game!
Will I retire or break 10K?
Many of these MUDs parse for hundreds or THOUSANDs of commands, and do it quite well. Anyway, I'd just like to present an example of how it can be done.
If you'd like to check out some of these look at http://www.mudconnector.com. Note that not all muds have natural language parsers, but I'm pretty sure you can search for ones that do at Mud Connector.
- Wedg
Jake
Dating: while( 1 ){ call_girl(); get_rejected(); drink_40(); } return 0;
Am I the only one to remember "Savvy," the natural language command line interface that worked on Apple // and IBM PCs?
There were two basic parts to it. A Forth interpreter came with predefined "pages" for standard office procedures such as word processor, spreadsheet, database, and so on. A ROM on a card contained some logic to interface between whatever you typed and the Forth system. Since Forth is extensible, it was simple to add new commands.
For example, if the system already had built into it a command to "list all paychecks in the last week" and you typed "lsit..." instead, the system would ask you what you meant, give you some previous times you typed in something like that, and ask you to either select one of them, or define your new command (in terms of old commands, or in a simple programming language that was near to English and not even related to Forth).
I rather liked the Savvy system, since it gradually learned from the user instead of always forcing the user to learn the correct way to do things. And it was pretty amazing to have such a system with virtual memory on an Apple //. With a hard disk it was fast and easy to get common jobs done.
Of course it was too expensive. The idea came out of the space program and was sold for something like $1,295 at first. Then they moved it to the IBM PC and eventually the price fell to less than $100. Excalibur Systems sold it; last I heard the company was doing document management systems.
On the down side, it was completely incompatible with any other software. It didn't even have a communications program to be able to use a modem to import data. And when the Macintosh came along a lot of users thought that a windowing system with a mouse was better than a keyboard.
But a lot of people have used command line interfaces as in Unix and the power is attractive for experienced users. Even with Unix shells one can get some of the same power as Savvy simply by creating aliases or small scripts.
Maybe voice recognition or some other form of natural language system or pattern recognition will be invented. But Savvy proved that you could do a lot of it in just 64KB, on a 1MHz CPU. It didn't try to do everything, just accommodate the user as best as it could. Neat idea. Will we learn from our past failures? Don't count on it!
I think a handy interface might be that of the MU* style games of the past...
"look"
You are standing in your office, a filing cabinent is to your right, and your desk is in front of you.
"sit at desk"
You are now sitting at your desk. On your desk is your check book register, a typewriter and a notepad.
"use typewriter"
(at this point, a typewriter program would open (i.e. word processor).
It would also accept text input at the bottom in a sort of "chat window"
"Insert new document"
"Throw document away"
"Get document"
Say you "get document"
You take the document. You should write a name on it.
"name document My Post to Slashdot"
Done.
"stand"
You stand up from the desk.
"look at filecabinet"
It's an ordinary 5 drawer filing cabinet. The drawers are labeled "Bills", "Letters", "Charts" , "Graphics", "MP3s"
open letters
I don't know what you mean.
Open drawer named Letters
You open up the drawer name "Letters"
File "My Document to Slashdot"
You store the file under the folder marked "M"
File "My Document to Slashdot" under "S"
You move the file to the folder named "S"
---------
Anyway, you get the point. Is anyone working on something like this?
In my spare time, I help some people in the area use their computers. One of my clients is an elderly woman with some limitations on the use of her hand. Selecting anything, especially the tiny text links and widgets used in many situations today, can be quite difficult. I didn't even try to do tasks using the command line, since she wouldn't be able to recreate them without calling me up and asking for assistance.
Sure, hardcore *nix hackers will never need a natural language anything -- in fact, one might argue that the standard suite of commands and GNU utilities is their natural language. But for people who don't work with computers all day long, saying something like "Enter a check," "Open a new document," or "Send an e-mail" will do just fine. Each of those documents would require several windows and mouse clicks even with the most intuitive of GUI's.
For more information, click here.
I studied "computational linguistics" for 5 years, and if there's one thing that I got out of it is that this whole endeavour (NL parsing + understanding) is hopeless.
Natural language is ambiguous way beyond peoples imagination, and if there's anything we don't need it is ambiguity in giving commands to a computer. NL doesn't _seem_ ambiguous because we are so good at disambiguating it (most of the time, anyway) using our own extensive knowledge base, about what is "reasonable". For a computer to have access to a similar knowledge base (simulating a brain, in short), is a pretty impossible task at this point in time.
Yes, we can get away with simple hacks and partial functionality, but what good is that? it will still be ambiguous. If you want a CLI interface and you want to move away from programming language style stuff, the least you have to do is define a language that can only be parsed and interpreted in one way. This won't be natural language, so user will have to learn its peculiarities. It's a shame, but deal with it.
If I can generalise for a moment, this whole idea that we need an UI that is closer to people to make computers easier to use for computer illiterates is very shaky. The fact that we can talk to it (through the proposed CLI, or speech) isn't making the computer any easier! Do you think that because I can now say "view attachment" instead of clicking on a button, that this will help Joe AverageUser understand any better why part of his HD was wiped, and why all his email contacts got spammed with a virus? Does it help him understand where his file is stored after he uttered "write file to disk"?
There are tons of (relatively easy) things we can do to make a computer easier to use, but this particular one won't bridge the gap once single bit.
I've been working in "computational linguistics" for the last two years.
:)
I guess there were a few things you didn't study
The past 10 years or so a new field - statistical natural language processing (SNLP) has shown a _lot_ of promise.
Right now, if you throw a SNLP system a bunch of parsetrees, it's able to induce a grammar - even in sufficiently complicated languages. (For simple languages, you can even induce a reasonable grammar just by giving syntactically correct string. Impressive!)
The next stage after inducing syntax from training examples with tagged syntax is to induce semantics from training examples with tagges semantics.
Yes, this is still a research topic, but it is by _no_ means pointless. One day computers will be able to do anything humans can, and more.
While I'm all for making computers easier to use, would typing "move all files beginning with the letter a to the directory called 'foo'" be any improvement over "mv a* foo" (or "move a* foo" for that matter)?
Sure, if you stick with the existing model of computer interaction and wedge a natural language interface on it.
However, that would be as useless as having a present-day CLI to low-level system functions only. "read disk sector 1023 from disk 4 via scsi interface 0 number 0 into memory address 1e75FOO" is a waste of even the simple CLIs we have now.
We need to go in the other direction. "Open my wedding photos." "Spell-check the latest draft of my current novel." "When did I receive an e-mail from my publisher with 'foo' in the subject?"
Yes, this means even more work than just parsing a natural language and would require a pretty sophisticated model of interaction, but isn't that the kind of challenge that produces revolutionary advances in computing?
Read the full text my book Perl for the Web
Slashdot asks:
'' would typing "move all files beginning with the letter a to the directory called 'foo'" be any
improvement over "mv a* foo" (or "move a* foo" for that matter)? ''
Probably not, but how about "Move all files I changed in the last week onto my zip disk."? I know I'd need to check the 'find' man page for that.
XEliza What sort of video card do you have?
user it's a rage 128
XEliza Tell me more about this rage 128
user Well, uh, it's got 8 megs of ram
XEliza How does 8 megs of ram make you feel?
user okay, I guess. I wish I had more of course.
XEliza Does it bother you that you wish you had more?
user Well, I don't really play a lot of games, so maybe I'm just being greedy.
XEliza Do people often say you are greedy.
user Not really, I mean, they say I spend too much time and money on my computer
XEliza Who says you spend too much time and money on your computer?
user Well, my mom does.
XEliza Tell me about your mother
error: cannot parse "mother" in module "freud":
no output written
2 1337 4 u!