views:

416

answers:

3

I'm currently looking at python because I really like the text parsing capabilities and the nltk library, but traditionally I am a .Net/C# programmer. I don't think IronPython is an integration point for me because I am using NLTK and presumably would need a port of that library to the CLR. I've looked a little at Python for .NET and was wondering if this was a good place to start. Is there a way to marshal a python class into C#? Also, is this solution still being used? Better yet, has anyone done this? One thing I am considering is just using a persistence medium as a go-between (parse in Python, store in MongoDB, and run site in .NET).

A: 

Just an Idea

How about running Python behind as a server, and connect it from .NET with socket?

Since NLTK loading take time and better load it in advance anyway.

S.Mark
+2  A: 

I don't know why you have a problem with IronPython. you can still use any and all nltk calls there.

To answer your question about porting a Python class into C#: try compiling your python code into an EXE. This creates a DLL with all your python classes in it. This is something that has been around for a while and it has worked like a charm for me in the past

inspectorG4dget
+6  A: 

NLTK is pure-python and thus can be made to run on IronPython easily. A search turned up this ticket - all one has to do is install a couple of extra Python libraries that don't come by default with IronPython.

This is probably the easiest way for you to integrate. Otherwise, you'll have to either run Python as a subprocess, which sounds complex, or run Python as a server that answers your requests. This is probably the most scalable, though complex, approach. If you go this way, consider Twisted to simplify the server code.

But do try IronPython first...

Eli Bendersky
Nice, this is what I was looking for. I was afraid IronPython wouldn't be able to support all the functionality of the NLTK, but if all I need is just additional libraries, that is fantastic.
Trent