Archive for the ‘computing’ Category

Machine Translation — savior of civilization

Wednesday, August 13th, 2003

Written July, 2001.

Machine translation will play a key role in transforming our world into a seamless and integrated global society, banishing forever the artificial barriers erected by human language. Whether it be a teenager in Africa chatting with another in China, both in their mother tongues, everything they type being translated flawlessly and instantaneously behind the scenes; or a businessman in Turkey negotiating the big deal in his native language with his counterpart in Japan, the fluent voice-to-voice translation in the background detectable only by the slightest of delays; or the aggrieved party in Poland who finally finds justice in his legal battle against an American corporation thanks to the ability to quickly translate thousands of pages of evidence; in all these cases, machine translation promises to be both a major impetus for, as well as a beneficiary of, our transition to true globalization.

As with all other enabling technologies, the explosive growth in machine translation will result in the creation of vast amounts of wealth, much of it ending up in the hands of the lucky few who had the right product or service or strategy at the right time. But there will be more than enough to go around – first and foremost to the so-called “engine” companies, of course, who develop the basic software that actually carries out the translation; but also to the consultants, system integrators, service aggregators, resellers and repackagers, and any one else smart enough to find ways to take advantage of this amazing golden goose, or lay hands on a ticket for the gravy train, depending on your choice of metaphors.

Or, in any case, so goes the litany, at least as MT supporters have been singing it for decades now.

Meanwhile, the market is voting with its pocketbook on the value of MT technology, and the results are not encouraging. One suite of MT technologies recently changed hands for the remarkably small sum of under ten million US dollars, or a piddling half-million per language pair. Another suite, widely regarded as perhaps the best in existence, was one component in a transaction also involving a major localization company; depending on how you value the localization assets, it is not hard to view the MT piece as essentially having been thrown in for free. One company is publicly traded and its valuation plain for all to see, but after adjusting that valuation for the imputed value of non-core products and services, such as consulting or integration, it appears that the value of their MT technology itself also barely reaches ten million dollars.

The Internet boom brought a momentary shine to the MT business. Perhaps as a shrink-wrapped product, so went this latest attempt to explain why MT was not taking off, MT will never find widespread adoption since it requires every user to make an explicit decision to install it and spend the $99 or $499 that the software costs. But now behold MT’s deus ex machina, the Internet, which is not only a technology which allows MT functionality to be accessed anywhere, anytime, but is, or was, also a business model where losing money was a good thing, this particular model tailor-made for the MT industry, since losing money, if nothing else, was something they had mastered well. The MT companies jumped on this opportunity to lose more money by giving away free on-line translation services with a vengeance. Unfortunately they fared no better than any of the other companies trying to buy dollars of revenue for a dollar ten each. Some of them apparently have not even noticed that the Internet boom is over, and are still pursuing the chimera that they can spread the gospel of MT by the odd expedient of flushing money down the toilet.

Dynamically generated fonts

Monday, August 4th, 2003

The University of Minnesota Design Institute has designed a dynamically generated font which varies depending on the weather outside—cute and curly for warm, angular and stark for cold, that sort of thing. You can see an example here. The New York Times reported on this as well, although this is just a link to their brain-dead pay-per-article page. It was also discussed in the Typographica Blog, with lots of comments.

It seems, though, that these fonts are not really dynamically generated—instead, there are discrete glyphs pre-designed for each cell of a 2- or 3-dimensional matrix.

This reminds me of my original doctoral thesis project at Tokyo University, the one Sakamura didn’t like. We were going to develop a mathematical representation of kanji, and based on that generate characters in real time, completely parameterizable. This is a much harder problem than it looks, and surprisingly little progress has been made on it. The only result of my research was an overview of all the work in related areas done over the previous decade or so. I’m going to put that up on-line sometime real soon now.

JavaScript Object Notation

Monday, July 14th, 2003

JavaScript Object Notation is a very simple idea—a standard way to represent XML documents as a JavaScript object. This could be useful when you’re trying to do client-side processing of complex XML-like datasets and want to avoid dependencies on a particular browser’s XML functionality. In a way, the JavaScript containing information about a game tree that’s downloaded to your browser from gobase.org is the same idea, albeit specialized for SGF.

Next step: JSXSL to apply XSL transforms to these objects?

How Igowalker will change go writing

Sunday, July 13th, 2003

Kobayashi Chizu 5-dan had one of the most insightful reactions to Igowalker™ that I’ve heard so far. She said that this medium would require go authors to write much differently than in the past. In particular, they would have, and should take advantage of, the opportunity to include many more variations in their commentaries.

Navigating Google space

Saturday, July 12th, 2003

Touchgraph has super-cool ways of visually navigating relationships found in Google or Amazon searches.

Navigating Philip Glass\’ music

Saturday, July 12th, 2003

IBM has come out with a fabulous interface for navigating the works of Philip Glass. All his works are organized along a number of dimensions, including date, “joy”, and “intensity”. You slide the mouse along any of these to view the works meeting those criteria, and when you stop the music in question plays for you.

Computer Go Overview

Tuesday, June 10th, 2003

Bob has written a good overview of the computer go problem.

Launching Igowalker

Thursday, May 29th, 2003

Today’s the big day—launching Igowalker. We’ll see how it goes.

Reality-based computer go

Tuesday, May 27th, 2003

From my position in the armchair, meaning you should take my comments with several grains of salt, I’m still thinking that for computer go there is useful work to be done in the area of goal structures, rich intermediate abstractions, and reasoning based on these. Perhaps this is considered old-fashioned today, but I’m biased, I suppose, by my experience as a mid-level human go player; I just don’t see how else programs will get to 1-dan and beyond.

Lately, though, I’ve been thinking about a different (complementary?) approach, which I call “reality-based computer go”. This is based on a couple of research directions in other fields. One is CG. For instance, to make the latest “Matrix” sequel, they developed a new CG approach which involves “painting” or “molding” actual photographic content onto computer-generated models (see related article). (This is not really new per se—people have been “painting” clothes on models for a long time now, for instance.) The point is that compared to previous approaches, where they tried to model everything down to the hairs on somebody’s chin, now they get the hairs “for free” just by distorting a picture of a real actor’s face (with real hair) to map onto the mathematical model of the face. Voila;—much more realistic-looking results at less cost (and modeling the hairs is expensive).

A similar direction can be seen in music synthesizers (of which I know virtually nothing). It seems that the latest approach is to take actual recorded sounds and transform and blend them, instead of trying to create sounds totally from scratch mathematically. Same idea.

I’ve got a passing interest in computational linguistics, and it seems to me that the same model should be applicable there as well. Of course, people have been doing corpus-based CL for years, Statistical and corpus-based approaches do somwhat presage the “paint reality onto the model” idea, but in practice are still basically limited to post-processing (in the CG model, “smoothing”) model-based output, to creating word or phrase-level dictionaries, or dealing with local problems such as disambiguation. We have “example-based MT”, but this has not yet reached the stage of being generally applicable. It seems attractive to me to consider “painting” linguistic content onto mathematically-generated language models.

In the go area, and I realize this is abstract in the extreme, we should consider “painting” low-level go content (individual moves and sequences) onto a higher-level model-based framework. (I suppose you could make the case that this even mimics a possible human mental structure involved in playing go—a higher-level “thought”-based process and a lower-level “pattern”-based process.) Leaving aside long-term research topics like what is the higher-level framework (well, obviously it’s the goal structures and rich intermediate abstractions I mentioned above), the low-level go content to be painted onto that framework, just as in the CG case, is derived from “reality”—in this case, game collections. In the CG case, in order to be able to morph and strectch and snap the content onto the model, the photographic/reality images need to be “marked”—for example, with points giving the location of Keanu Reeve’s chin. So in the go case, we also need to develop libraries of reality-derived content with the appropriate mapping indicators that show how that content is fitted onto the model.

I don’t claim to be fully up on current research based on professional game collections (in CL terms, “corpora”), but I’d like to do a research project, or work with someone on one, which attempts to do a broad-based analysis of professional games in terms of the low-level move sequences. To do that, we need a “vocabulary” for types of moves. Then the “grammar” (allusion to CL intended) is a series of rules or empirical patterns tying together those vocabulary items. Now, instead of arbitrarily imposing our own vocabulary (“hane”, “tobi”), the initial phase of the analysis should be based on well-known cluster analysis techniques which will result in identifying the vocabulary based on co-occurence patterns. (A fascinating by-product would be if this process actually identified new groupings or types of moves not identified as such by humans yet.) One type of grammar that could then be developed from this vocabulary is an n-gram grammar; this type of approach has already found wide application in computational linguistics. A computer go engine based on this type of thinking would be more focused on sequences of moves which make sense together. At a minimum, such a low-level vocabulary and grammar could be effective in move generation, or choosing or optimizing possible moves found by “traditional” techniques.

A trivial example of this is where Black pushes and White extends. A more sophisticated example might be the case where Black commonly makes a peep on one side of a one-point jump before jumping himself on the other side.

XSLT as a full functional language

Thursday, May 8th, 2003

XSLT obviously has much in common with functional programming languages. But it’s not really functional, because you can’t pass around functions (which in the XSLT world are the things called “templates”) as first-class objects, right?

Wrong. Dimitre Novatchev has come up with the amazing hack of using namespaces as a way to identify functions. To pass a function, he passes a placeholder element from that namespace; then the function can be invoked using XSLT’s basic template matching mechanisms. In his article The Functional Programming Language XSLT —A proof through examples—he then goes on to implement major parts of a FP library using his technique. A must-read for the XSLT geek.