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)?
--
"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!
Well, if you consider that one of the most successful natural language parsers created was the Zork parser, which ran just dandy on 48K 1Mhz home computers in 1981, probably not.
(For those not familar with the Zork parser, it could understand sentences like "Take all but the blue gem from the chest and then go north")
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.
> Icon based interfaces are crude and slow, the only reason for their
> adoption is that 3 year olds can use them.
icon-based interfaces are designed on the theory that humans have been recognizing shapes and colors for longer than they've been a distinct species, while written language is something that popped up, biologically speaking, about thirty seconds ago. . this is very *old* news in the human-factors community. . every study on the books says that it's both faster and easier to pick out an icon with a distinct color and shape than it is to pick out a text string with specific qualities.
case in point.. time yourself, and count the number of images in the following list:
ball.gif bar.gif box.gif calendar cap.gif cgi1.shtml cgi2.html cgi3.shtml clients.html count count1 demo imap.html imap.map includes.shtml interactive.html last_min.old line.gif logo.gif me.jpg nntp1.html old.tar.gz phone.html pipe.shtml price.html smlogo.gif speil.html storage.html tchotchkes.html threads
now translate the list into a set of icons on your computer, associating a specific color and shape with each file type, and do it again. . compare the results. . if you're working with a standard-issue nervous system, the latter will be at least twice as fast.
> We communicate through language and its time to communicate with
> computers in our language.
no, we communicate through language when we're trying to convey a small quantity of information that's easy to serialize, and we use visual representations when we need some serious power. . describe the positional elevation of the Rocky Mountains at 100 meter resolution linguistically. . now try doing it in a way that's more efficient than a topo map.
take a look at Edward Tufte's excellent books on graphical communication for more info.
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.
Let's face it, "pkunzip -d *.zip" is gibberish to most people. If you only know a GUI, it's difficult to understand a CLI, or even why you'd want a CLI.
If you consider how much CPU processes for the average 500MHz you are not using while typing at the command line I really don't think it's a problem. And consider the fact that in two years a 800MHz proc will seem slow as balls.
http://overwhelmed.org
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 no open source project of this magnitude simply because the stated goal relies upon the development of new technologies; i.e., AI of a far greater magnitude than anything available now. Development of such technologies relies upon the investment of capital into pure research in dozens of different academic fields ranging from linguistics to experimental psychology to computer science. While Microsoft has long been acknowledged for having assembled a killer research arm, I seriously doubt that even Microsoft has the revenues to devote to natural language processing that will allow them alone to make the leap forward in AI that would make such a thing possible.
NLP will only come about as the result of the combined efforts of researchers in many different fields. Most of these are academics employed by universities and are funded either through private grants, funds and trusts, or through federal money earmarked for pure research -- this is of course your tax dollars. So while Microsoft may
be playing a part (and spending money) in bringing NLP to the desktop, and should be commended for this, what they are really doing is buying access to the knowledge pool generated by all the researchers in this field. This gives Microsoft an advantage in that if they have the info first, then they can be the first to market an application for this new technology. Everything else Microsoft may do on this front is just buying image. The general public gains a favorable impression of Microsoft when they read in their paper (or more likely, hear Tom Brokaw pontificate about) how Microsoft is going to make their lives easier by making computers understand how they actually talk (or write).
So please, before you heap accolades on capitalistic enterprise, please remember that they do not operate in a vacuum and do receive much assistance from the public sector.
Why re-invent /bin/sh ?
Simple enough.. because it'd be silly to try to write a natural language OS based around modern OS architecture.
When you have users referring to files as 'this', 'that', 'my shopping list', 'the tax stuff from Bob', etc. it becomes considerably easier to just write the search routines into your processing program rather than trying to get it to use tremendously complicated find and grep commands. Just think about the number and complexity of the commands you'd need to do something like "Print all the publishing info we got from marketing this week on the printer upstairs, then fax it to Steve in Detroit with the usual cover sheet."
I can't imagine how a natural language processor would work, but it certainly wouldn't be much like anything we have now.
And as for translating to english first.. at least people have some ideas for how to write a natural language processor, most people serious about the field still say reliable computer translation is impossible.
Dreamweaver
"If a man hasn't discovered something he will die for, he isn't fit to live" -- MLK, Jr.
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?
Instead of using a natural language system for something like this, why not just use something similar to Apple MPW's commando system. Any command preceded by "commando" or suffixed with the ellipse character (option-;) brings up a dialog box with all (or at least most) of the options and arguments a command takes as radio buttons, checkboxes, file pickers, and fill in text boxes. At the bottom of the dialog it shows the command as it is being built. With this system, you can use the dialog box as a guide if you can't remember the syntax to a command, but it doesn't become a crutch that you need to keep using.
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?
hmm... you wouldn't, uh, be, uh, posting the code for that there parser anywhere wouldya? Hm?
There is a lot more stucture to AppleScript than might be immediately apparent.
I know this to be the case... however, compared to C, the apparent laxness of syntax rules means that the number of actual parsing rules must be enormous.
See the C-like Frontier UserTalk for an example of somethig that looks a little easier to parse.
I've done the mandatory dabbling in Frontier (bought the O'reilly book, read most of it, forgot most of that within a year...) and the ever-dreaded QuickKeys. I've considered getting into the Osaxen biz, but, frankly, the number of projects on my plate expands at about twice the rate as my ability to... eat off that plate? Sorry about the poor metaphor, but you get the idea.
I discovered people much smarter than me (Henry Lieberman at MIT, for one)
I'm gonna go look for it right now... I'm also a hopeless MIT fanboy, so it's a double pleasure!
2 1337 4 u!
Actually, the really impressive thing abou AS is that it gives you the option of a natural language syntax. You can still call all the classes by their carat-enclosed names and write AppleScript with an almost-as-dense-as-perl style if you wish, but for those of us who prize readability over saving a few keystrokes, the natural language option is there.
The irony is that a friend of my gf's and I were just discussing what would be required to write a parser for AppleScript... the final conclusion was an army of people much much smarter than we...
2 1337 4 u!
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!